LCOV - code coverage report
Current view: top level - home/czgdp18079/Quansight/scipy/build/scipy/signal/_sosfilt.cpython-312-x86_64-linux-gnu.so.p - _sosfilt.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3005 11072 27.1 %
Date: 2024-11-19 14:45:53 Functions: 121 376 32.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Generated by Cython 3.0.11 */
       2             : 
       3             : #ifndef PY_SSIZE_T_CLEAN
       4             : #define PY_SSIZE_T_CLEAN
       5             : #endif /* PY_SSIZE_T_CLEAN */
       6             : #if defined(CYTHON_LIMITED_API) && 0
       7             :   #ifndef Py_LIMITED_API
       8             :     #if CYTHON_LIMITED_API+0 > 0x03030000
       9             :       #define Py_LIMITED_API CYTHON_LIMITED_API
      10             :     #else
      11             :       #define Py_LIMITED_API 0x03030000
      12             :     #endif
      13             :   #endif
      14             : #endif
      15             : 
      16             : #include "Python.h"
      17             : #ifndef Py_PYTHON_H
      18             :     #error Python headers needed to compile C extensions, please install development version of Python.
      19             : #elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
      20             :     #error Cython requires Python 2.7+ or Python 3.3+.
      21             : #else
      22             : #if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
      23             : #define __PYX_EXTRA_ABI_MODULE_NAME "limited"
      24             : #else
      25             : #define __PYX_EXTRA_ABI_MODULE_NAME ""
      26             : #endif
      27             : #define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
      28             : #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
      29             : #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
      30             : #define CYTHON_HEX_VERSION 0x03000BF0
      31             : #define CYTHON_FUTURE_DIVISION 1
      32             : #include <stddef.h>
      33             : #ifndef offsetof
      34             :   #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
      35             : #endif
      36             : #if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
      37             :   #ifndef __stdcall
      38             :     #define __stdcall
      39             :   #endif
      40             :   #ifndef __cdecl
      41             :     #define __cdecl
      42             :   #endif
      43             :   #ifndef __fastcall
      44             :     #define __fastcall
      45             :   #endif
      46             : #endif
      47             : #ifndef DL_IMPORT
      48             :   #define DL_IMPORT(t) t
      49             : #endif
      50             : #ifndef DL_EXPORT
      51             :   #define DL_EXPORT(t) t
      52             : #endif
      53             : #define __PYX_COMMA ,
      54             : #ifndef HAVE_LONG_LONG
      55             :   #define HAVE_LONG_LONG
      56             : #endif
      57             : #ifndef PY_LONG_LONG
      58             :   #define PY_LONG_LONG LONG_LONG
      59             : #endif
      60             : #ifndef Py_HUGE_VAL
      61             :   #define Py_HUGE_VAL HUGE_VAL
      62             : #endif
      63             : #define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
      64             : #if defined(GRAALVM_PYTHON)
      65             :   /* For very preliminary testing purposes. Most variables are set the same as PyPy.
      66             :      The existence of this section does not imply that anything works or is even tested */
      67             :   #define CYTHON_COMPILING_IN_PYPY 0
      68             :   #define CYTHON_COMPILING_IN_CPYTHON 0
      69             :   #define CYTHON_COMPILING_IN_LIMITED_API 0
      70             :   #define CYTHON_COMPILING_IN_GRAAL 1
      71             :   #define CYTHON_COMPILING_IN_NOGIL 0
      72             :   #undef CYTHON_USE_TYPE_SLOTS
      73             :   #define CYTHON_USE_TYPE_SLOTS 0
      74             :   #undef CYTHON_USE_TYPE_SPECS
      75             :   #define CYTHON_USE_TYPE_SPECS 0
      76             :   #undef CYTHON_USE_PYTYPE_LOOKUP
      77             :   #define CYTHON_USE_PYTYPE_LOOKUP 0
      78             :   #if PY_VERSION_HEX < 0x03050000
      79             :     #undef CYTHON_USE_ASYNC_SLOTS
      80             :     #define CYTHON_USE_ASYNC_SLOTS 0
      81             :   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
      82             :     #define CYTHON_USE_ASYNC_SLOTS 1
      83             :   #endif
      84             :   #undef CYTHON_USE_PYLIST_INTERNALS
      85             :   #define CYTHON_USE_PYLIST_INTERNALS 0
      86             :   #undef CYTHON_USE_UNICODE_INTERNALS
      87             :   #define CYTHON_USE_UNICODE_INTERNALS 0
      88             :   #undef CYTHON_USE_UNICODE_WRITER
      89             :   #define CYTHON_USE_UNICODE_WRITER 0
      90             :   #undef CYTHON_USE_PYLONG_INTERNALS
      91             :   #define CYTHON_USE_PYLONG_INTERNALS 0
      92             :   #undef CYTHON_AVOID_BORROWED_REFS
      93             :   #define CYTHON_AVOID_BORROWED_REFS 1
      94             :   #undef CYTHON_ASSUME_SAFE_MACROS
      95             :   #define CYTHON_ASSUME_SAFE_MACROS 0
      96             :   #undef CYTHON_UNPACK_METHODS
      97             :   #define CYTHON_UNPACK_METHODS 0
      98             :   #undef CYTHON_FAST_THREAD_STATE
      99             :   #define CYTHON_FAST_THREAD_STATE 0
     100             :   #undef CYTHON_FAST_GIL
     101             :   #define CYTHON_FAST_GIL 0
     102             :   #undef CYTHON_METH_FASTCALL
     103             :   #define CYTHON_METH_FASTCALL 0
     104             :   #undef CYTHON_FAST_PYCALL
     105             :   #define CYTHON_FAST_PYCALL 0
     106             :   #ifndef CYTHON_PEP487_INIT_SUBCLASS
     107             :     #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
     108             :   #endif
     109             :   #undef CYTHON_PEP489_MULTI_PHASE_INIT
     110             :   #define CYTHON_PEP489_MULTI_PHASE_INIT 1
     111             :   #undef CYTHON_USE_MODULE_STATE
     112             :   #define CYTHON_USE_MODULE_STATE 0
     113             :   #undef CYTHON_USE_TP_FINALIZE
     114             :   #define CYTHON_USE_TP_FINALIZE 0
     115             :   #undef CYTHON_USE_DICT_VERSIONS
     116             :   #define CYTHON_USE_DICT_VERSIONS 0
     117             :   #undef CYTHON_USE_EXC_INFO_STACK
     118             :   #define CYTHON_USE_EXC_INFO_STACK 0
     119             :   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     120             :     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
     121             :   #endif
     122             :   #undef CYTHON_USE_FREELISTS
     123             :   #define CYTHON_USE_FREELISTS 0
     124             : #elif defined(PYPY_VERSION)
     125             :   #define CYTHON_COMPILING_IN_PYPY 1
     126             :   #define CYTHON_COMPILING_IN_CPYTHON 0
     127             :   #define CYTHON_COMPILING_IN_LIMITED_API 0
     128             :   #define CYTHON_COMPILING_IN_GRAAL 0
     129             :   #define CYTHON_COMPILING_IN_NOGIL 0
     130             :   #undef CYTHON_USE_TYPE_SLOTS
     131             :   #define CYTHON_USE_TYPE_SLOTS 0
     132             :   #ifndef CYTHON_USE_TYPE_SPECS
     133             :     #define CYTHON_USE_TYPE_SPECS 0
     134             :   #endif
     135             :   #undef CYTHON_USE_PYTYPE_LOOKUP
     136             :   #define CYTHON_USE_PYTYPE_LOOKUP 0
     137             :   #if PY_VERSION_HEX < 0x03050000
     138             :     #undef CYTHON_USE_ASYNC_SLOTS
     139             :     #define CYTHON_USE_ASYNC_SLOTS 0
     140             :   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
     141             :     #define CYTHON_USE_ASYNC_SLOTS 1
     142             :   #endif
     143             :   #undef CYTHON_USE_PYLIST_INTERNALS
     144             :   #define CYTHON_USE_PYLIST_INTERNALS 0
     145             :   #undef CYTHON_USE_UNICODE_INTERNALS
     146             :   #define CYTHON_USE_UNICODE_INTERNALS 0
     147             :   #undef CYTHON_USE_UNICODE_WRITER
     148             :   #define CYTHON_USE_UNICODE_WRITER 0
     149             :   #undef CYTHON_USE_PYLONG_INTERNALS
     150             :   #define CYTHON_USE_PYLONG_INTERNALS 0
     151             :   #undef CYTHON_AVOID_BORROWED_REFS
     152             :   #define CYTHON_AVOID_BORROWED_REFS 1
     153             :   #undef CYTHON_ASSUME_SAFE_MACROS
     154             :   #define CYTHON_ASSUME_SAFE_MACROS 0
     155             :   #undef CYTHON_UNPACK_METHODS
     156             :   #define CYTHON_UNPACK_METHODS 0
     157             :   #undef CYTHON_FAST_THREAD_STATE
     158             :   #define CYTHON_FAST_THREAD_STATE 0
     159             :   #undef CYTHON_FAST_GIL
     160             :   #define CYTHON_FAST_GIL 0
     161             :   #undef CYTHON_METH_FASTCALL
     162             :   #define CYTHON_METH_FASTCALL 0
     163             :   #undef CYTHON_FAST_PYCALL
     164             :   #define CYTHON_FAST_PYCALL 0
     165             :   #ifndef CYTHON_PEP487_INIT_SUBCLASS
     166             :     #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
     167             :   #endif
     168             :   #if PY_VERSION_HEX < 0x03090000
     169             :     #undef CYTHON_PEP489_MULTI_PHASE_INIT
     170             :     #define CYTHON_PEP489_MULTI_PHASE_INIT 0
     171             :   #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
     172             :     #define CYTHON_PEP489_MULTI_PHASE_INIT 1
     173             :   #endif
     174             :   #undef CYTHON_USE_MODULE_STATE
     175             :   #define CYTHON_USE_MODULE_STATE 0
     176             :   #undef CYTHON_USE_TP_FINALIZE
     177             :   #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
     178             :   #undef CYTHON_USE_DICT_VERSIONS
     179             :   #define CYTHON_USE_DICT_VERSIONS 0
     180             :   #undef CYTHON_USE_EXC_INFO_STACK
     181             :   #define CYTHON_USE_EXC_INFO_STACK 0
     182             :   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     183             :     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
     184             :   #endif
     185             :   #undef CYTHON_USE_FREELISTS
     186             :   #define CYTHON_USE_FREELISTS 0
     187             : #elif defined(CYTHON_LIMITED_API)
     188             :   #ifdef Py_LIMITED_API
     189             :     #undef __PYX_LIMITED_VERSION_HEX
     190             :     #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
     191             :   #endif
     192             :   #define CYTHON_COMPILING_IN_PYPY 0
     193             :   #define CYTHON_COMPILING_IN_CPYTHON 0
     194             :   #define CYTHON_COMPILING_IN_LIMITED_API 1
     195             :   #define CYTHON_COMPILING_IN_GRAAL 0
     196             :   #define CYTHON_COMPILING_IN_NOGIL 0
     197             :   #undef CYTHON_CLINE_IN_TRACEBACK
     198             :   #define CYTHON_CLINE_IN_TRACEBACK 0
     199             :   #undef CYTHON_USE_TYPE_SLOTS
     200             :   #define CYTHON_USE_TYPE_SLOTS 0
     201             :   #undef CYTHON_USE_TYPE_SPECS
     202             :   #define CYTHON_USE_TYPE_SPECS 1
     203             :   #undef CYTHON_USE_PYTYPE_LOOKUP
     204             :   #define CYTHON_USE_PYTYPE_LOOKUP 0
     205             :   #undef CYTHON_USE_ASYNC_SLOTS
     206             :   #define CYTHON_USE_ASYNC_SLOTS 0
     207             :   #undef CYTHON_USE_PYLIST_INTERNALS
     208             :   #define CYTHON_USE_PYLIST_INTERNALS 0
     209             :   #undef CYTHON_USE_UNICODE_INTERNALS
     210             :   #define CYTHON_USE_UNICODE_INTERNALS 0
     211             :   #ifndef CYTHON_USE_UNICODE_WRITER
     212             :     #define CYTHON_USE_UNICODE_WRITER 0
     213             :   #endif
     214             :   #undef CYTHON_USE_PYLONG_INTERNALS
     215             :   #define CYTHON_USE_PYLONG_INTERNALS 0
     216             :   #ifndef CYTHON_AVOID_BORROWED_REFS
     217             :     #define CYTHON_AVOID_BORROWED_REFS 0
     218             :   #endif
     219             :   #undef CYTHON_ASSUME_SAFE_MACROS
     220             :   #define CYTHON_ASSUME_SAFE_MACROS 0
     221             :   #undef CYTHON_UNPACK_METHODS
     222             :   #define CYTHON_UNPACK_METHODS 0
     223             :   #undef CYTHON_FAST_THREAD_STATE
     224             :   #define CYTHON_FAST_THREAD_STATE 0
     225             :   #undef CYTHON_FAST_GIL
     226             :   #define CYTHON_FAST_GIL 0
     227             :   #undef CYTHON_METH_FASTCALL
     228             :   #define CYTHON_METH_FASTCALL 0
     229             :   #undef CYTHON_FAST_PYCALL
     230             :   #define CYTHON_FAST_PYCALL 0
     231             :   #ifndef CYTHON_PEP487_INIT_SUBCLASS
     232             :     #define CYTHON_PEP487_INIT_SUBCLASS 1
     233             :   #endif
     234             :   #undef CYTHON_PEP489_MULTI_PHASE_INIT
     235             :   #define CYTHON_PEP489_MULTI_PHASE_INIT 0
     236             :   #undef CYTHON_USE_MODULE_STATE
     237             :   #define CYTHON_USE_MODULE_STATE 1
     238             :   #ifndef CYTHON_USE_TP_FINALIZE
     239             :     #define CYTHON_USE_TP_FINALIZE 0
     240             :   #endif
     241             :   #undef CYTHON_USE_DICT_VERSIONS
     242             :   #define CYTHON_USE_DICT_VERSIONS 0
     243             :   #undef CYTHON_USE_EXC_INFO_STACK
     244             :   #define CYTHON_USE_EXC_INFO_STACK 0
     245             :   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     246             :     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
     247             :   #endif
     248             :   #undef CYTHON_USE_FREELISTS
     249             :   #define CYTHON_USE_FREELISTS 0
     250             : #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
     251             :   #define CYTHON_COMPILING_IN_PYPY 0
     252             :   #define CYTHON_COMPILING_IN_CPYTHON 0
     253             :   #define CYTHON_COMPILING_IN_LIMITED_API 0
     254             :   #define CYTHON_COMPILING_IN_GRAAL 0
     255             :   #define CYTHON_COMPILING_IN_NOGIL 1
     256             :   #ifndef CYTHON_USE_TYPE_SLOTS
     257             :     #define CYTHON_USE_TYPE_SLOTS 1
     258             :   #endif
     259             :   #ifndef CYTHON_USE_TYPE_SPECS
     260             :     #define CYTHON_USE_TYPE_SPECS 0
     261             :   #endif
     262             :   #undef CYTHON_USE_PYTYPE_LOOKUP
     263             :   #define CYTHON_USE_PYTYPE_LOOKUP 0
     264             :   #ifndef CYTHON_USE_ASYNC_SLOTS
     265             :     #define CYTHON_USE_ASYNC_SLOTS 1
     266             :   #endif
     267             :   #ifndef CYTHON_USE_PYLONG_INTERNALS
     268             :     #define CYTHON_USE_PYLONG_INTERNALS 0
     269             :   #endif
     270             :   #undef CYTHON_USE_PYLIST_INTERNALS
     271             :   #define CYTHON_USE_PYLIST_INTERNALS 0
     272             :   #ifndef CYTHON_USE_UNICODE_INTERNALS
     273             :     #define CYTHON_USE_UNICODE_INTERNALS 1
     274             :   #endif
     275             :   #undef CYTHON_USE_UNICODE_WRITER
     276             :   #define CYTHON_USE_UNICODE_WRITER 0
     277             :   #ifndef CYTHON_AVOID_BORROWED_REFS
     278             :     #define CYTHON_AVOID_BORROWED_REFS 0
     279             :   #endif
     280             :   #ifndef CYTHON_ASSUME_SAFE_MACROS
     281             :     #define CYTHON_ASSUME_SAFE_MACROS 1
     282             :   #endif
     283             :   #ifndef CYTHON_UNPACK_METHODS
     284             :     #define CYTHON_UNPACK_METHODS 1
     285             :   #endif
     286             :   #undef CYTHON_FAST_THREAD_STATE
     287             :   #define CYTHON_FAST_THREAD_STATE 0
     288             :   #undef CYTHON_FAST_GIL
     289             :   #define CYTHON_FAST_GIL 0
     290             :   #ifndef CYTHON_METH_FASTCALL
     291             :     #define CYTHON_METH_FASTCALL 1
     292             :   #endif
     293             :   #undef CYTHON_FAST_PYCALL
     294             :   #define CYTHON_FAST_PYCALL 0
     295             :   #ifndef CYTHON_PEP487_INIT_SUBCLASS
     296             :     #define CYTHON_PEP487_INIT_SUBCLASS 1
     297             :   #endif
     298             :   #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
     299             :     #define CYTHON_PEP489_MULTI_PHASE_INIT 1
     300             :   #endif
     301             :   #ifndef CYTHON_USE_MODULE_STATE
     302             :     #define CYTHON_USE_MODULE_STATE 0
     303             :   #endif
     304             :   #ifndef CYTHON_USE_TP_FINALIZE
     305             :     #define CYTHON_USE_TP_FINALIZE 1
     306             :   #endif
     307             :   #undef CYTHON_USE_DICT_VERSIONS
     308             :   #define CYTHON_USE_DICT_VERSIONS 0
     309             :   #undef CYTHON_USE_EXC_INFO_STACK
     310             :   #define CYTHON_USE_EXC_INFO_STACK 0
     311             :   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     312             :     #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
     313             :   #endif
     314             :   #ifndef CYTHON_USE_FREELISTS
     315             :     #define CYTHON_USE_FREELISTS 0
     316             :   #endif
     317             : #else
     318             :   #define CYTHON_COMPILING_IN_PYPY 0
     319             :   #define CYTHON_COMPILING_IN_CPYTHON 1
     320             :   #define CYTHON_COMPILING_IN_LIMITED_API 0
     321             :   #define CYTHON_COMPILING_IN_GRAAL 0
     322             :   #define CYTHON_COMPILING_IN_NOGIL 0
     323             :   #ifndef CYTHON_USE_TYPE_SLOTS
     324             :     #define CYTHON_USE_TYPE_SLOTS 1
     325             :   #endif
     326             :   #ifndef CYTHON_USE_TYPE_SPECS
     327             :     #define CYTHON_USE_TYPE_SPECS 0
     328             :   #endif
     329             :   #ifndef CYTHON_USE_PYTYPE_LOOKUP
     330             :     #define CYTHON_USE_PYTYPE_LOOKUP 1
     331             :   #endif
     332             :   #if PY_MAJOR_VERSION < 3
     333             :     #undef CYTHON_USE_ASYNC_SLOTS
     334             :     #define CYTHON_USE_ASYNC_SLOTS 0
     335             :   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
     336             :     #define CYTHON_USE_ASYNC_SLOTS 1
     337             :   #endif
     338             :   #ifndef CYTHON_USE_PYLONG_INTERNALS
     339             :     #define CYTHON_USE_PYLONG_INTERNALS 1
     340             :   #endif
     341             :   #ifndef CYTHON_USE_PYLIST_INTERNALS
     342             :     #define CYTHON_USE_PYLIST_INTERNALS 1
     343             :   #endif
     344             :   #ifndef CYTHON_USE_UNICODE_INTERNALS
     345             :     #define CYTHON_USE_UNICODE_INTERNALS 1
     346             :   #endif
     347             :   #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
     348             :     #undef CYTHON_USE_UNICODE_WRITER
     349             :     #define CYTHON_USE_UNICODE_WRITER 0
     350             :   #elif !defined(CYTHON_USE_UNICODE_WRITER)
     351             :     #define CYTHON_USE_UNICODE_WRITER 1
     352             :   #endif
     353             :   #ifndef CYTHON_AVOID_BORROWED_REFS
     354             :     #define CYTHON_AVOID_BORROWED_REFS 0
     355             :   #endif
     356             :   #ifndef CYTHON_ASSUME_SAFE_MACROS
     357             :     #define CYTHON_ASSUME_SAFE_MACROS 1
     358             :   #endif
     359             :   #ifndef CYTHON_UNPACK_METHODS
     360             :     #define CYTHON_UNPACK_METHODS 1
     361             :   #endif
     362             :   #ifndef CYTHON_FAST_THREAD_STATE
     363             :     #define CYTHON_FAST_THREAD_STATE 1
     364             :   #endif
     365             :   #ifndef CYTHON_FAST_GIL
     366             :     #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
     367             :   #endif
     368             :   #ifndef CYTHON_METH_FASTCALL
     369             :     #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
     370             :   #endif
     371             :   #ifndef CYTHON_FAST_PYCALL
     372             :     #define CYTHON_FAST_PYCALL 1
     373             :   #endif
     374             :   #ifndef CYTHON_PEP487_INIT_SUBCLASS
     375             :     #define CYTHON_PEP487_INIT_SUBCLASS 1
     376             :   #endif
     377             :   #if PY_VERSION_HEX < 0x03050000
     378             :     #undef CYTHON_PEP489_MULTI_PHASE_INIT
     379             :     #define CYTHON_PEP489_MULTI_PHASE_INIT 0
     380             :   #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
     381             :     #define CYTHON_PEP489_MULTI_PHASE_INIT 1
     382             :   #endif
     383             :   #ifndef CYTHON_USE_MODULE_STATE
     384             :     #define CYTHON_USE_MODULE_STATE 0
     385             :   #endif
     386             :   #if PY_VERSION_HEX < 0x030400a1
     387             :     #undef CYTHON_USE_TP_FINALIZE
     388             :     #define CYTHON_USE_TP_FINALIZE 0
     389             :   #elif !defined(CYTHON_USE_TP_FINALIZE)
     390             :     #define CYTHON_USE_TP_FINALIZE 1
     391             :   #endif
     392             :   #if PY_VERSION_HEX < 0x030600B1
     393             :     #undef CYTHON_USE_DICT_VERSIONS
     394             :     #define CYTHON_USE_DICT_VERSIONS 0
     395             :   #elif !defined(CYTHON_USE_DICT_VERSIONS)
     396             :     #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5)
     397             :   #endif
     398             :   #if PY_VERSION_HEX < 0x030700A3
     399             :     #undef CYTHON_USE_EXC_INFO_STACK
     400             :     #define CYTHON_USE_EXC_INFO_STACK 0
     401             :   #elif !defined(CYTHON_USE_EXC_INFO_STACK)
     402             :     #define CYTHON_USE_EXC_INFO_STACK 1
     403             :   #endif
     404             :   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     405             :     #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
     406             :   #endif
     407             :   #ifndef CYTHON_USE_FREELISTS
     408             :     #define CYTHON_USE_FREELISTS 1
     409             :   #endif
     410             : #endif
     411             : #if !defined(CYTHON_FAST_PYCCALL)
     412             : #define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
     413             : #endif
     414             : #if !defined(CYTHON_VECTORCALL)
     415             : #define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
     416             : #endif
     417             : #define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
     418             : #if CYTHON_USE_PYLONG_INTERNALS
     419             :   #if PY_MAJOR_VERSION < 3
     420             :     #include "longintrepr.h"
     421             :   #endif
     422             :   #undef SHIFT
     423             :   #undef BASE
     424             :   #undef MASK
     425             :   #ifdef SIZEOF_VOID_P
     426             :     enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
     427             :   #endif
     428             : #endif
     429             : #ifndef __has_attribute
     430             :   #define __has_attribute(x) 0
     431             : #endif
     432             : #ifndef __has_cpp_attribute
     433             :   #define __has_cpp_attribute(x) 0
     434             : #endif
     435             : #ifndef CYTHON_RESTRICT
     436             :   #if defined(__GNUC__)
     437             :     #define CYTHON_RESTRICT __restrict__
     438             :   #elif defined(_MSC_VER) && _MSC_VER >= 1400
     439             :     #define CYTHON_RESTRICT __restrict
     440             :   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     441             :     #define CYTHON_RESTRICT restrict
     442             :   #else
     443             :     #define CYTHON_RESTRICT
     444             :   #endif
     445             : #endif
     446             : #ifndef CYTHON_UNUSED
     447             :   #if defined(__cplusplus)
     448             :     /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     449             :      * but leads to warnings with -pedantic, since it is a C++17 feature */
     450             :     #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
     451             :       #if __has_cpp_attribute(maybe_unused)
     452             :         #define CYTHON_UNUSED [[maybe_unused]]
     453             :       #endif
     454             :     #endif
     455             :   #endif
     456             : #endif
     457             : #ifndef CYTHON_UNUSED
     458             : # if defined(__GNUC__)
     459             : #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
     460             : #     define CYTHON_UNUSED __attribute__ ((__unused__))
     461             : #   else
     462             : #     define CYTHON_UNUSED
     463             : #   endif
     464             : # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
     465             : #   define CYTHON_UNUSED __attribute__ ((__unused__))
     466             : # else
     467             : #   define CYTHON_UNUSED
     468             : # endif
     469             : #endif
     470             : #ifndef CYTHON_UNUSED_VAR
     471             : #  if defined(__cplusplus)
     472             :      template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
     473             : #  else
     474             : #    define CYTHON_UNUSED_VAR(x) (void)(x)
     475             : #  endif
     476             : #endif
     477             : #ifndef CYTHON_MAYBE_UNUSED_VAR
     478             :   #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
     479             : #endif
     480             : #ifndef CYTHON_NCP_UNUSED
     481             : # if CYTHON_COMPILING_IN_CPYTHON
     482             : #  define CYTHON_NCP_UNUSED
     483             : # else
     484             : #  define CYTHON_NCP_UNUSED CYTHON_UNUSED
     485             : # endif
     486             : #endif
     487             : #ifndef CYTHON_USE_CPP_STD_MOVE
     488             :   #if defined(__cplusplus) && (\
     489             :     __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
     490             :     #define CYTHON_USE_CPP_STD_MOVE 1
     491             :   #else
     492             :     #define CYTHON_USE_CPP_STD_MOVE 0
     493             :   #endif
     494             : #endif
     495             : #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
     496             : #ifdef _MSC_VER
     497             :     #ifndef _MSC_STDINT_H_
     498             :         #if _MSC_VER < 1300
     499             :             typedef unsigned char     uint8_t;
     500             :             typedef unsigned short    uint16_t;
     501             :             typedef unsigned int      uint32_t;
     502             :         #else
     503             :             typedef unsigned __int8   uint8_t;
     504             :             typedef unsigned __int16  uint16_t;
     505             :             typedef unsigned __int32  uint32_t;
     506             :         #endif
     507             :     #endif
     508             :     #if _MSC_VER < 1300
     509             :         #ifdef _WIN64
     510             :             typedef unsigned long long  __pyx_uintptr_t;
     511             :         #else
     512             :             typedef unsigned int        __pyx_uintptr_t;
     513             :         #endif
     514             :     #else
     515             :         #ifdef _WIN64
     516             :             typedef unsigned __int64    __pyx_uintptr_t;
     517             :         #else
     518             :             typedef unsigned __int32    __pyx_uintptr_t;
     519             :         #endif
     520             :     #endif
     521             : #else
     522             :     #include <stdint.h>
     523             :     typedef uintptr_t  __pyx_uintptr_t;
     524             : #endif
     525             : #ifndef CYTHON_FALLTHROUGH
     526             :   #if defined(__cplusplus)
     527             :     /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     528             :      * but leads to warnings with -pedantic, since it is a C++17 feature */
     529             :     #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
     530             :       #if __has_cpp_attribute(fallthrough)
     531             :         #define CYTHON_FALLTHROUGH [[fallthrough]]
     532             :       #endif
     533             :     #endif
     534             :     #ifndef CYTHON_FALLTHROUGH
     535             :       #if __has_cpp_attribute(clang::fallthrough)
     536             :         #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
     537             :       #elif __has_cpp_attribute(gnu::fallthrough)
     538             :         #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
     539             :       #endif
     540             :     #endif
     541             :   #endif
     542             :   #ifndef CYTHON_FALLTHROUGH
     543             :     #if __has_attribute(fallthrough)
     544             :       #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
     545             :     #else
     546             :       #define CYTHON_FALLTHROUGH
     547             :     #endif
     548             :   #endif
     549             :   #if defined(__clang__) && defined(__apple_build_version__)
     550             :     #if __apple_build_version__ < 7000000
     551             :       #undef  CYTHON_FALLTHROUGH
     552             :       #define CYTHON_FALLTHROUGH
     553             :     #endif
     554             :   #endif
     555             : #endif
     556             : #ifdef __cplusplus
     557             :   template <typename T>
     558             :   struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
     559             :   #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
     560             : #else
     561             :   #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
     562             : #endif
     563             : #if CYTHON_COMPILING_IN_PYPY == 1
     564             :   #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
     565             : #else
     566             :   #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
     567             : #endif
     568             : #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))
     569             : 
     570             : #ifndef CYTHON_INLINE
     571             :   #if defined(__clang__)
     572             :     #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
     573             :   #elif defined(__GNUC__)
     574             :     #define CYTHON_INLINE __inline__
     575             :   #elif defined(_MSC_VER)
     576             :     #define CYTHON_INLINE __inline
     577             :   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     578             :     #define CYTHON_INLINE inline
     579             :   #else
     580             :     #define CYTHON_INLINE
     581             :   #endif
     582             : #endif
     583             : 
     584             : #define __PYX_BUILD_PY_SSIZE_T "n"
     585             : #define CYTHON_FORMAT_SSIZE_T "z"
     586             : #if PY_MAJOR_VERSION < 3
     587             :   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
     588             :   #define __Pyx_DefaultClassType PyClass_Type
     589             :   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
     590             :           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
     591             : #else
     592             :   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
     593             :   #define __Pyx_DefaultClassType PyType_Type
     594             : #if CYTHON_COMPILING_IN_LIMITED_API
     595             :     static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
     596             :                                                     PyObject *code, PyObject *c, PyObject* n, PyObject *v,
     597             :                                                     PyObject *fv, PyObject *cell, PyObject* fn,
     598             :                                                     PyObject *name, int fline, PyObject *lnos) {
     599             :         PyObject *exception_table = NULL;
     600             :         PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
     601             :         #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
     602             :         PyObject *version_info;
     603             :         PyObject *py_minor_version = NULL;
     604             :         #endif
     605             :         long minor_version = 0;
     606             :         PyObject *type, *value, *traceback;
     607             :         PyErr_Fetch(&type, &value, &traceback);
     608             :         #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
     609             :         minor_version = 11;
     610             :         #else
     611             :         if (!(version_info = PySys_GetObject("version_info"))) goto end;
     612             :         if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
     613             :         minor_version = PyLong_AsLong(py_minor_version);
     614             :         Py_DECREF(py_minor_version);
     615             :         if (minor_version == -1 && PyErr_Occurred()) goto end;
     616             :         #endif
     617             :         if (!(types_module = PyImport_ImportModule("types"))) goto end;
     618             :         if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
     619             :         if (minor_version <= 7) {
     620             :             (void)p;
     621             :             result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
     622             :                           c, n, v, fn, name, fline, lnos, fv, cell);
     623             :         } else if (minor_version <= 10) {
     624             :             result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
     625             :                           c, n, v, fn, name, fline, lnos, fv, cell);
     626             :         } else {
     627             :             if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
     628             :             result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
     629             :                           c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
     630             :         }
     631             :     end:
     632             :         Py_XDECREF(code_type);
     633             :         Py_XDECREF(exception_table);
     634             :         Py_XDECREF(types_module);
     635             :         if (type) {
     636             :             PyErr_Restore(type, value, traceback);
     637             :         }
     638             :         return result;
     639             :     }
     640             :     #ifndef CO_OPTIMIZED
     641             :     #define CO_OPTIMIZED 0x0001
     642             :     #endif
     643             :     #ifndef CO_NEWLOCALS
     644             :     #define CO_NEWLOCALS 0x0002
     645             :     #endif
     646             :     #ifndef CO_VARARGS
     647             :     #define CO_VARARGS 0x0004
     648             :     #endif
     649             :     #ifndef CO_VARKEYWORDS
     650             :     #define CO_VARKEYWORDS 0x0008
     651             :     #endif
     652             :     #ifndef CO_ASYNC_GENERATOR
     653             :     #define CO_ASYNC_GENERATOR 0x0200
     654             :     #endif
     655             :     #ifndef CO_GENERATOR
     656             :     #define CO_GENERATOR 0x0020
     657             :     #endif
     658             :     #ifndef CO_COROUTINE
     659             :     #define CO_COROUTINE 0x0080
     660             :     #endif
     661             : #elif PY_VERSION_HEX >= 0x030B0000
     662           3 :   static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
     663             :                                                     PyObject *code, PyObject *c, PyObject* n, PyObject *v,
     664             :                                                     PyObject *fv, PyObject *cell, PyObject* fn,
     665             :                                                     PyObject *name, int fline, PyObject *lnos) {
     666           3 :     PyCodeObject *result;
     667           3 :     PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
     668           3 :     if (!empty_bytes) return NULL;
     669           3 :     result =
     670             :       #if PY_VERSION_HEX >= 0x030C0000
     671           3 :         PyUnstable_Code_NewWithPosOnlyArgs
     672             :       #else
     673             :         PyCode_NewWithPosOnlyArgs
     674             :       #endif
     675             :         (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
     676           3 :     Py_DECREF(empty_bytes);
     677             :     return result;
     678             :   }
     679             : #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
     680             :   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
     681             :           PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
     682             : #else
     683             :   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
     684             :           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
     685             : #endif
     686             : #endif
     687             : #if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
     688             :   #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
     689             : #else
     690             :   #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
     691             : #endif
     692             : #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
     693             :   #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
     694             : #else
     695             :   #define __Pyx_Py_Is(x, y) ((x) == (y))
     696             : #endif
     697             : #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
     698             :   #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
     699             : #else
     700             :   #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
     701             : #endif
     702             : #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
     703             :   #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
     704             : #else
     705             :   #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
     706             : #endif
     707             : #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
     708             :   #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
     709             : #else
     710             :   #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
     711             : #endif
     712             : #define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
     713             : #if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
     714             :   #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
     715             : #else
     716             :   #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
     717             : #endif
     718             : #ifndef CO_COROUTINE
     719             :   #define CO_COROUTINE 0x80
     720             : #endif
     721             : #ifndef CO_ASYNC_GENERATOR
     722             :   #define CO_ASYNC_GENERATOR 0x200
     723             : #endif
     724             : #ifndef Py_TPFLAGS_CHECKTYPES
     725             :   #define Py_TPFLAGS_CHECKTYPES 0
     726             : #endif
     727             : #ifndef Py_TPFLAGS_HAVE_INDEX
     728             :   #define Py_TPFLAGS_HAVE_INDEX 0
     729             : #endif
     730             : #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
     731             :   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
     732             : #endif
     733             : #ifndef Py_TPFLAGS_HAVE_FINALIZE
     734             :   #define Py_TPFLAGS_HAVE_FINALIZE 0
     735             : #endif
     736             : #ifndef Py_TPFLAGS_SEQUENCE
     737             :   #define Py_TPFLAGS_SEQUENCE 0
     738             : #endif
     739             : #ifndef Py_TPFLAGS_MAPPING
     740             :   #define Py_TPFLAGS_MAPPING 0
     741             : #endif
     742             : #ifndef METH_STACKLESS
     743             :   #define METH_STACKLESS 0
     744             : #endif
     745             : #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
     746             :   #ifndef METH_FASTCALL
     747             :      #define METH_FASTCALL 0x80
     748             :   #endif
     749             :   typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
     750             :   typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
     751             :                                                           Py_ssize_t nargs, PyObject *kwnames);
     752             : #else
     753             :   #if PY_VERSION_HEX >= 0x030d00A4
     754             :   #  define __Pyx_PyCFunctionFast PyCFunctionFast
     755             :   #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
     756             :   #else
     757             :   #  define __Pyx_PyCFunctionFast _PyCFunctionFast
     758             :   #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
     759             :   #endif
     760             : #endif
     761             : #if CYTHON_METH_FASTCALL
     762             :   #define __Pyx_METH_FASTCALL METH_FASTCALL
     763             :   #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
     764             :   #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
     765             : #else
     766             :   #define __Pyx_METH_FASTCALL METH_VARARGS
     767             :   #define __Pyx_PyCFunction_FastCall PyCFunction
     768             :   #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
     769             : #endif
     770             : #if CYTHON_VECTORCALL
     771             :   #define __pyx_vectorcallfunc vectorcallfunc
     772             :   #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
     773             :   #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
     774             : #elif CYTHON_BACKPORT_VECTORCALL
     775             :   typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
     776             :                                             size_t nargsf, PyObject *kwnames);
     777             :   #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  ((size_t)1 << (8 * sizeof(size_t) - 1))
     778             :   #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
     779             : #else
     780             :   #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
     781             :   #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
     782             : #endif
     783             : #if PY_MAJOR_VERSION >= 0x030900B1
     784             : #define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
     785             : #else
     786             : #define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
     787             : #endif
     788             : #define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
     789             : #if CYTHON_COMPILING_IN_CPYTHON
     790             : #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
     791             : #elif !CYTHON_COMPILING_IN_LIMITED_API
     792             : #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
     793             : #endif
     794             : #if CYTHON_COMPILING_IN_CPYTHON
     795             : #define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
     796           0 : static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
     797           0 :     return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
     798             : }
     799             : #endif
     800             : static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
     801             : #if CYTHON_COMPILING_IN_LIMITED_API
     802             :     return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
     803             : #else
     804             :     return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
     805             : #endif
     806             : }
     807             : #define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
     808             : #if __PYX_LIMITED_VERSION_HEX < 0x030900B1
     809             :   #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
     810             :   typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
     811             : #else
     812             :   #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
     813             :   #define __Pyx_PyCMethod  PyCMethod
     814             : #endif
     815             : #ifndef METH_METHOD
     816             :   #define METH_METHOD 0x200
     817             : #endif
     818             : #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
     819             :   #define PyObject_Malloc(s)   PyMem_Malloc(s)
     820             :   #define PyObject_Free(p)     PyMem_Free(p)
     821             :   #define PyObject_Realloc(p)  PyMem_Realloc(p)
     822             : #endif
     823             : #if CYTHON_COMPILING_IN_LIMITED_API
     824             :   #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
     825             :   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
     826             : #else
     827             :   #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
     828             :   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
     829             : #endif
     830             : #if CYTHON_COMPILING_IN_LIMITED_API
     831             :   #define __Pyx_PyThreadState_Current PyThreadState_Get()
     832             : #elif !CYTHON_FAST_THREAD_STATE
     833             :   #define __Pyx_PyThreadState_Current PyThreadState_GET()
     834             : #elif PY_VERSION_HEX >= 0x030d00A1
     835             :   #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
     836             : #elif PY_VERSION_HEX >= 0x03060000
     837             :   #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
     838             : #elif PY_VERSION_HEX >= 0x03000000
     839             :   #define __Pyx_PyThreadState_Current PyThreadState_GET()
     840             : #else
     841             :   #define __Pyx_PyThreadState_Current _PyThreadState_Current
     842             : #endif
     843             : #if CYTHON_COMPILING_IN_LIMITED_API
     844             : static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
     845             : {
     846             :     void *result;
     847             :     result = PyModule_GetState(op);
     848             :     if (!result)
     849             :         Py_FatalError("Couldn't find the module state");
     850             :     return result;
     851             : }
     852             : #endif
     853             : #define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
     854             : #if CYTHON_COMPILING_IN_LIMITED_API
     855             :   #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
     856             : #else
     857             :   #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
     858             : #endif
     859             : #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
     860             : #include "pythread.h"
     861             : #define Py_tss_NEEDS_INIT 0
     862             : typedef int Py_tss_t;
     863             : static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
     864             :   *key = PyThread_create_key();
     865             :   return 0;
     866             : }
     867             : static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
     868             :   Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
     869             :   *key = Py_tss_NEEDS_INIT;
     870             :   return key;
     871             : }
     872             : static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
     873             :   PyObject_Free(key);
     874             : }
     875             : static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
     876             :   return *key != Py_tss_NEEDS_INIT;
     877             : }
     878             : static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
     879             :   PyThread_delete_key(*key);
     880             :   *key = Py_tss_NEEDS_INIT;
     881             : }
     882             : static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
     883             :   return PyThread_set_key_value(*key, value);
     884             : }
     885             : static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
     886             :   return PyThread_get_key_value(*key);
     887             : }
     888             : #endif
     889             : #if PY_MAJOR_VERSION < 3
     890             :     #if CYTHON_COMPILING_IN_PYPY
     891             :         #if PYPY_VERSION_NUM < 0x07030600
     892             :             #if defined(__cplusplus) && __cplusplus >= 201402L
     893             :                 [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
     894             :             #elif defined(__GNUC__) || defined(__clang__)
     895             :                 __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
     896             :             #elif defined(_MSC_VER)
     897             :                 __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
     898             :             #endif
     899             :             static CYTHON_INLINE int PyGILState_Check(void) {
     900             :                 return 0;
     901             :             }
     902             :         #else  // PYPY_VERSION_NUM < 0x07030600
     903             :         #endif  // PYPY_VERSION_NUM < 0x07030600
     904             :     #else
     905             :         static CYTHON_INLINE int PyGILState_Check(void) {
     906             :             PyThreadState * tstate = _PyThreadState_Current;
     907             :             return tstate && (tstate == PyGILState_GetThisThreadState());
     908             :         }
     909             :     #endif
     910             : #endif
     911             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
     912             : #define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
     913             : #else
     914             : #define __Pyx_PyDict_NewPresized(n)  PyDict_New()
     915             : #endif
     916             : #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
     917             :   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
     918             :   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
     919             : #else
     920             :   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
     921             :   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
     922             : #endif
     923             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
     924             : #define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
     925           0 : static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
     926           0 :     PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
     927           0 :     if (res == NULL) PyErr_Clear();
     928           0 :     return res;
     929             : }
     930             : #elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
     931             : #define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
     932             : #define __Pyx_PyDict_GetItemStr           PyDict_GetItem
     933             : #else
     934             : static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
     935             : #if CYTHON_COMPILING_IN_PYPY
     936             :     return PyDict_GetItem(dict, name);
     937             : #else
     938             :     PyDictEntry *ep;
     939             :     PyDictObject *mp = (PyDictObject*) dict;
     940             :     long hash = ((PyStringObject *) name)->ob_shash;
     941             :     assert(hash != -1);
     942             :     ep = (mp->ma_lookup)(mp, name, hash);
     943             :     if (ep == NULL) {
     944             :         return NULL;
     945             :     }
     946             :     return ep->me_value;
     947             : #endif
     948             : }
     949             : #define __Pyx_PyDict_GetItemStr           PyDict_GetItem
     950             : #endif
     951             : #if CYTHON_USE_TYPE_SLOTS
     952             :   #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
     953             :   #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
     954             :   #define __Pyx_PyObject_GetIterNextFunc(obj)  (Py_TYPE(obj)->tp_iternext)
     955             : #else
     956             :   #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
     957             :   #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
     958             :   #define __Pyx_PyObject_GetIterNextFunc(obj)  PyIter_Next
     959             : #endif
     960             : #if CYTHON_COMPILING_IN_LIMITED_API
     961             :   #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
     962             : #else
     963             :   #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
     964             : #endif
     965             : #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
     966             : #define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
     967             :     PyTypeObject *type = Py_TYPE((PyObject*)obj);\
     968             :     assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
     969             :     PyObject_GC_Del(obj);\
     970             :     Py_DECREF(type);\
     971             : }
     972             : #else
     973             : #define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
     974             : #endif
     975             : #if CYTHON_COMPILING_IN_LIMITED_API
     976             :   #define CYTHON_PEP393_ENABLED 1
     977             :   #define __Pyx_PyUnicode_READY(op)       (0)
     978             :   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GetLength(u)
     979             :   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
     980             :   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
     981             :   #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
     982             :   #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
     983             :   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
     984             :   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
     985             : #elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
     986             :   #define CYTHON_PEP393_ENABLED 1
     987             :   #if PY_VERSION_HEX >= 0x030C0000
     988             :     #define __Pyx_PyUnicode_READY(op)       (0)
     989             :   #else
     990             :     #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
     991             :                                                 0 : _PyUnicode_Ready((PyObject *)(op)))
     992             :   #endif
     993             :   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
     994             :   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
     995             :   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
     996             :   #define __Pyx_PyUnicode_KIND(u)         ((int)PyUnicode_KIND(u))
     997             :   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
     998             :   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
     999             :   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
    1000             :   #if PY_VERSION_HEX >= 0x030C0000
    1001             :     #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
    1002             :   #else
    1003             :     #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
    1004             :     #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
    1005             :     #else
    1006             :     #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
    1007             :     #endif
    1008             :   #endif
    1009             : #else
    1010             :   #define CYTHON_PEP393_ENABLED 0
    1011             :   #define PyUnicode_1BYTE_KIND  1
    1012             :   #define PyUnicode_2BYTE_KIND  2
    1013             :   #define PyUnicode_4BYTE_KIND  4
    1014             :   #define __Pyx_PyUnicode_READY(op)       (0)
    1015             :   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
    1016             :   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
    1017             :   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
    1018             :   #define __Pyx_PyUnicode_KIND(u)         ((int)sizeof(Py_UNICODE))
    1019             :   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
    1020             :   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
    1021             :   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
    1022             :   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
    1023             : #endif
    1024             : #if CYTHON_COMPILING_IN_PYPY
    1025             :   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
    1026             :   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
    1027             : #else
    1028             :   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
    1029             :   #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
    1030             :       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
    1031             : #endif
    1032             : #if CYTHON_COMPILING_IN_PYPY
    1033             :   #if !defined(PyUnicode_DecodeUnicodeEscape)
    1034             :     #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
    1035             :   #endif
    1036             :   #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
    1037             :     #undef PyUnicode_Contains
    1038             :     #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
    1039             :   #endif
    1040             :   #if !defined(PyByteArray_Check)
    1041             :     #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
    1042             :   #endif
    1043             :   #if !defined(PyObject_Format)
    1044             :     #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
    1045             :   #endif
    1046             : #endif
    1047             : #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
    1048             : #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
    1049             : #if PY_MAJOR_VERSION >= 3
    1050             :   #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
    1051             : #else
    1052             :   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
    1053             : #endif
    1054             : #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
    1055             :   #define PyObject_ASCII(o)            PyObject_Repr(o)
    1056             : #endif
    1057             : #if PY_MAJOR_VERSION >= 3
    1058             :   #define PyBaseString_Type            PyUnicode_Type
    1059             :   #define PyStringObject               PyUnicodeObject
    1060             :   #define PyString_Type                PyUnicode_Type
    1061             :   #define PyString_Check               PyUnicode_Check
    1062             :   #define PyString_CheckExact          PyUnicode_CheckExact
    1063             : #ifndef PyObject_Unicode
    1064             :   #define PyObject_Unicode             PyObject_Str
    1065             : #endif
    1066             : #endif
    1067             : #if PY_MAJOR_VERSION >= 3
    1068             :   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
    1069             :   #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
    1070             : #else
    1071             :   #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
    1072             :   #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
    1073             : #endif
    1074             : #if CYTHON_COMPILING_IN_CPYTHON
    1075             :   #define __Pyx_PySequence_ListKeepNew(obj)\
    1076             :     (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
    1077             : #else
    1078             :   #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
    1079             : #endif
    1080             : #ifndef PySet_CheckExact
    1081             :   #define PySet_CheckExact(obj)        __Pyx_IS_TYPE(obj, &PySet_Type)
    1082             : #endif
    1083             : #if PY_VERSION_HEX >= 0x030900A4
    1084             :   #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
    1085             :   #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
    1086             : #else
    1087             :   #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
    1088             :   #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
    1089             : #endif
    1090             : #if CYTHON_ASSUME_SAFE_MACROS
    1091             :   #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
    1092             :   #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
    1093             :   #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
    1094             :   #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
    1095             :   #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
    1096             :   #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
    1097             :   #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
    1098             :   #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
    1099             :   #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
    1100             : #else
    1101             :   #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
    1102             :   #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
    1103             :   #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
    1104             :   #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
    1105             :   #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
    1106             :   #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
    1107             :   #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
    1108             :   #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
    1109             :   #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
    1110             : #endif
    1111             : #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    1112             :   #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
    1113             : #else
    1114           4 :   static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
    1115           4 :       PyObject *module = PyImport_AddModule(name);
    1116           4 :       Py_XINCREF(module);
    1117           4 :       return module;
    1118             :   }
    1119             : #endif
    1120             : #if PY_MAJOR_VERSION >= 3
    1121             :   #define PyIntObject                  PyLongObject
    1122             :   #define PyInt_Type                   PyLong_Type
    1123             :   #define PyInt_Check(op)              PyLong_Check(op)
    1124             :   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
    1125             :   #define __Pyx_Py3Int_Check(op)       PyLong_Check(op)
    1126             :   #define __Pyx_Py3Int_CheckExact(op)  PyLong_CheckExact(op)
    1127             :   #define PyInt_FromString             PyLong_FromString
    1128             :   #define PyInt_FromUnicode            PyLong_FromUnicode
    1129             :   #define PyInt_FromLong               PyLong_FromLong
    1130             :   #define PyInt_FromSize_t             PyLong_FromSize_t
    1131             :   #define PyInt_FromSsize_t            PyLong_FromSsize_t
    1132             :   #define PyInt_AsLong                 PyLong_AsLong
    1133             :   #define PyInt_AS_LONG                PyLong_AS_LONG
    1134             :   #define PyInt_AsSsize_t              PyLong_AsSsize_t
    1135             :   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
    1136             :   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
    1137             :   #define PyNumber_Int                 PyNumber_Long
    1138             : #else
    1139             :   #define __Pyx_Py3Int_Check(op)       (PyLong_Check(op) || PyInt_Check(op))
    1140             :   #define __Pyx_Py3Int_CheckExact(op)  (PyLong_CheckExact(op) || PyInt_CheckExact(op))
    1141             : #endif
    1142             : #if PY_MAJOR_VERSION >= 3
    1143             :   #define PyBoolObject                 PyLongObject
    1144             : #endif
    1145             : #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
    1146             :   #ifndef PyUnicode_InternFromString
    1147             :     #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
    1148             :   #endif
    1149             : #endif
    1150             : #if PY_VERSION_HEX < 0x030200A4
    1151             :   typedef long Py_hash_t;
    1152             :   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
    1153             :   #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
    1154             : #else
    1155             :   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
    1156             :   #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
    1157             : #endif
    1158             : #if CYTHON_USE_ASYNC_SLOTS
    1159             :   #if PY_VERSION_HEX >= 0x030500B1
    1160             :     #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    1161             :     #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
    1162             :   #else
    1163             :     #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
    1164             :   #endif
    1165             : #else
    1166             :   #define __Pyx_PyType_AsAsync(obj) NULL
    1167             : #endif
    1168             : #ifndef __Pyx_PyAsyncMethodsStruct
    1169             :     typedef struct {
    1170             :         unaryfunc am_await;
    1171             :         unaryfunc am_aiter;
    1172             :         unaryfunc am_anext;
    1173             :     } __Pyx_PyAsyncMethodsStruct;
    1174             : #endif
    1175             : 
    1176             : #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
    1177             :   #if !defined(_USE_MATH_DEFINES)
    1178             :     #define _USE_MATH_DEFINES
    1179             :   #endif
    1180             : #endif
    1181             : #include <math.h>
    1182             : #ifdef NAN
    1183             : #define __PYX_NAN() ((float) NAN)
    1184             : #else
    1185             : static CYTHON_INLINE float __PYX_NAN() {
    1186             :   float value;
    1187             :   memset(&value, 0xFF, sizeof(value));
    1188             :   return value;
    1189             : }
    1190             : #endif
    1191             : #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
    1192             : #define __Pyx_truncl trunc
    1193             : #else
    1194             : #define __Pyx_truncl truncl
    1195             : #endif
    1196             : 
    1197             : #define __PYX_MARK_ERR_POS(f_index, lineno) \
    1198             :     { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__;  (void)__pyx_clineno; }
    1199             : #define __PYX_ERR(f_index, lineno, Ln_error) \
    1200             :     { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
    1201             : 
    1202             : #ifdef CYTHON_EXTERN_C
    1203             :     #undef __PYX_EXTERN_C
    1204             :     #define __PYX_EXTERN_C CYTHON_EXTERN_C
    1205             : #elif defined(__PYX_EXTERN_C)
    1206             :     #ifdef _MSC_VER
    1207             :     #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    1208             :     #else
    1209             :     #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    1210             :     #endif
    1211             : #else
    1212             :   #ifdef __cplusplus
    1213             :     #define __PYX_EXTERN_C extern "C"
    1214             :   #else
    1215             :     #define __PYX_EXTERN_C extern
    1216             :   #endif
    1217             : #endif
    1218             : 
    1219             : #define __PYX_HAVE__scipy__signal___sosfilt
    1220             : #define __PYX_HAVE_API__scipy__signal___sosfilt
    1221             : /* Early includes */
    1222             : #include <string.h>
    1223             : #include <stdio.h>
    1224             : 
    1225             :     /* Using NumPy API declarations from "numpy/__init__.cython-30.pxd" */
    1226             :     
    1227             : #include "numpy/arrayobject.h"
    1228             : #include "numpy/ndarrayobject.h"
    1229             : #include "numpy/ndarraytypes.h"
    1230             : #include "numpy/arrayscalars.h"
    1231             : #include "numpy/ufuncobject.h"
    1232             : #include "pythread.h"
    1233             : #include <stdlib.h>
    1234             : #ifdef _OPENMP
    1235             : #include <omp.h>
    1236             : #endif /* _OPENMP */
    1237             : 
    1238             : #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
    1239             : #define CYTHON_WITHOUT_ASSERTIONS
    1240             : #endif
    1241             : 
    1242             : typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
    1243             :                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
    1244             : 
    1245             : #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
    1246             : #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
    1247             : #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
    1248             : #define __PYX_DEFAULT_STRING_ENCODING ""
    1249             : #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
    1250             : #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
    1251             : #define __Pyx_uchar_cast(c) ((unsigned char)c)
    1252             : #define __Pyx_long_cast(x) ((long)x)
    1253             : #define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    1254             :     (sizeof(type) < sizeof(Py_ssize_t))  ||\
    1255             :     (sizeof(type) > sizeof(Py_ssize_t) &&\
    1256             :           likely(v < (type)PY_SSIZE_T_MAX ||\
    1257             :                  v == (type)PY_SSIZE_T_MAX)  &&\
    1258             :           (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
    1259             :                                 v == (type)PY_SSIZE_T_MIN)))  ||\
    1260             :     (sizeof(type) == sizeof(Py_ssize_t) &&\
    1261             :           (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
    1262             :                                v == (type)PY_SSIZE_T_MAX)))  )
    1263         402 : static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    1264         402 :     return (size_t) i < (size_t) limit;
    1265             : }
    1266             : #if defined (__cplusplus) && __cplusplus >= 201103L
    1267             :     #include <cstdlib>
    1268             :     #define __Pyx_sst_abs(value) std::abs(value)
    1269             : #elif SIZEOF_INT >= SIZEOF_SIZE_T
    1270             :     #define __Pyx_sst_abs(value) abs(value)
    1271             : #elif SIZEOF_LONG >= SIZEOF_SIZE_T
    1272             :     #define __Pyx_sst_abs(value) labs(value)
    1273             : #elif defined (_MSC_VER)
    1274             :     #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
    1275             : #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    1276             :     #define __Pyx_sst_abs(value) llabs(value)
    1277             : #elif defined (__GNUC__)
    1278             :     #define __Pyx_sst_abs(value) __builtin_llabs(value)
    1279             : #else
    1280             :     #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
    1281             : #endif
    1282             : static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
    1283             : static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
    1284             : static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
    1285             : static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
    1286             : #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
    1287             : #define __Pyx_PyBytes_FromString        PyBytes_FromString
    1288             : #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
    1289             : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
    1290             : #if PY_MAJOR_VERSION < 3
    1291             :     #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    1292             :     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
    1293             : #else
    1294             :     #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    1295             :     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
    1296             : #endif
    1297             : #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
    1298             : #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
    1299             : #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
    1300             : #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
    1301             : #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
    1302             : #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
    1303             : #define __Pyx_PyObject_AsWritableString(s)    ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
    1304             : #define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
    1305             : #define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
    1306             : #define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
    1307             : #define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
    1308             : #define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
    1309             : #define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
    1310             : #define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
    1311             : #define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
    1312             : #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
    1313             : #define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
    1314             : #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
    1315             : #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
    1316             : #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
    1317             : static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
    1318             : static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
    1319             : static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
    1320             : static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
    1321             : #define __Pyx_PySequence_Tuple(obj)\
    1322             :     (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
    1323             : static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
    1324             : static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
    1325             : static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
    1326             : #if CYTHON_ASSUME_SAFE_MACROS
    1327             : #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
    1328             : #else
    1329             : #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
    1330             : #endif
    1331             : #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
    1332             : #if PY_MAJOR_VERSION >= 3
    1333             : #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
    1334             : #else
    1335             : #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
    1336             : #endif
    1337             : #if CYTHON_USE_PYLONG_INTERNALS
    1338             :   #if PY_VERSION_HEX >= 0x030C00A7
    1339             :   #ifndef _PyLong_SIGN_MASK
    1340             :     #define _PyLong_SIGN_MASK 3
    1341             :   #endif
    1342             :   #ifndef _PyLong_NON_SIZE_BITS
    1343             :     #define _PyLong_NON_SIZE_BITS 3
    1344             :   #endif
    1345             :   #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
    1346             :   #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
    1347             :   #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
    1348             :   #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
    1349             :   #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
    1350             :   #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
    1351             :   #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
    1352             :   #define __Pyx_PyLong_SignedDigitCount(x)\
    1353             :         ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
    1354             :   #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    1355             :     #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    1356             :     #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
    1357             :   #else
    1358             :     #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    1359             :     #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
    1360             :   #endif
    1361             :   typedef Py_ssize_t  __Pyx_compact_pylong;
    1362             :   typedef size_t  __Pyx_compact_upylong;
    1363             :   #else
    1364             :   #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
    1365             :   #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
    1366             :   #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
    1367             :   #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
    1368             :   #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
    1369             :   #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
    1370             :   #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
    1371             :   #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
    1372             :   #define __Pyx_PyLong_CompactValue(x)\
    1373             :         ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
    1374             :   typedef sdigit  __Pyx_compact_pylong;
    1375             :   typedef digit  __Pyx_compact_upylong;
    1376             :   #endif
    1377             :   #if PY_VERSION_HEX >= 0x030C00A5
    1378             :   #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
    1379             :   #else
    1380             :   #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
    1381             :   #endif
    1382             : #endif
    1383             : #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    1384             : #include <string.h>
    1385             : static int __Pyx_sys_getdefaultencoding_not_ascii;
    1386             : static int __Pyx_init_sys_getdefaultencoding_params(void) {
    1387             :     PyObject* sys;
    1388             :     PyObject* default_encoding = NULL;
    1389             :     PyObject* ascii_chars_u = NULL;
    1390             :     PyObject* ascii_chars_b = NULL;
    1391             :     const char* default_encoding_c;
    1392             :     sys = PyImport_ImportModule("sys");
    1393             :     if (!sys) goto bad;
    1394             :     default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    1395             :     Py_DECREF(sys);
    1396             :     if (!default_encoding) goto bad;
    1397             :     default_encoding_c = PyBytes_AsString(default_encoding);
    1398             :     if (!default_encoding_c) goto bad;
    1399             :     if (strcmp(default_encoding_c, "ascii") == 0) {
    1400             :         __Pyx_sys_getdefaultencoding_not_ascii = 0;
    1401             :     } else {
    1402             :         char ascii_chars[128];
    1403             :         int c;
    1404             :         for (c = 0; c < 128; c++) {
    1405             :             ascii_chars[c] = (char) c;
    1406             :         }
    1407             :         __Pyx_sys_getdefaultencoding_not_ascii = 1;
    1408             :         ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
    1409             :         if (!ascii_chars_u) goto bad;
    1410             :         ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
    1411             :         if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
    1412             :             PyErr_Format(
    1413             :                 PyExc_ValueError,
    1414             :                 "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
    1415             :                 default_encoding_c);
    1416             :             goto bad;
    1417             :         }
    1418             :         Py_DECREF(ascii_chars_u);
    1419             :         Py_DECREF(ascii_chars_b);
    1420             :     }
    1421             :     Py_DECREF(default_encoding);
    1422             :     return 0;
    1423             : bad:
    1424             :     Py_XDECREF(default_encoding);
    1425             :     Py_XDECREF(ascii_chars_u);
    1426             :     Py_XDECREF(ascii_chars_b);
    1427             :     return -1;
    1428             : }
    1429             : #endif
    1430             : #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
    1431             : #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
    1432             : #else
    1433             : #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
    1434             : #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    1435             : #include <string.h>
    1436             : static char* __PYX_DEFAULT_STRING_ENCODING;
    1437             : static int __Pyx_init_sys_getdefaultencoding_params(void) {
    1438             :     PyObject* sys;
    1439             :     PyObject* default_encoding = NULL;
    1440             :     char* default_encoding_c;
    1441             :     sys = PyImport_ImportModule("sys");
    1442             :     if (!sys) goto bad;
    1443             :     default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    1444             :     Py_DECREF(sys);
    1445             :     if (!default_encoding) goto bad;
    1446             :     default_encoding_c = PyBytes_AsString(default_encoding);
    1447             :     if (!default_encoding_c) goto bad;
    1448             :     __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    1449             :     if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    1450             :     strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    1451             :     Py_DECREF(default_encoding);
    1452             :     return 0;
    1453             : bad:
    1454             :     Py_XDECREF(default_encoding);
    1455             :     return -1;
    1456             : }
    1457             : #endif
    1458             : #endif
    1459             : 
    1460             : 
    1461             : /* Test for GCC > 2.95 */
    1462             : #if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
    1463             :   #define likely(x)   __builtin_expect(!!(x), 1)
    1464             :   #define unlikely(x) __builtin_expect(!!(x), 0)
    1465             : #else /* !__GNUC__ or GCC < 2.95 */
    1466             :   #define likely(x)   (x)
    1467             :   #define unlikely(x) (x)
    1468             : #endif /* __GNUC__ */
    1469             : static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
    1470             : 
    1471             : #if !CYTHON_USE_MODULE_STATE
    1472             : static PyObject *__pyx_m = NULL;
    1473             : #endif
    1474             : static int __pyx_lineno;
    1475             : static int __pyx_clineno = 0;
    1476             : static const char * __pyx_cfilenm = __FILE__;
    1477             : static const char *__pyx_filename;
    1478             : 
    1479             : /* Header.proto */
    1480             : #if !defined(CYTHON_CCOMPLEX)
    1481             :   #if defined(__cplusplus)
    1482             :     #define CYTHON_CCOMPLEX 1
    1483             :   #elif (defined(_Complex_I) && !defined(_MSC_VER)) || ((defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_COMPLEX__) && !defined(_MSC_VER))
    1484             :     #define CYTHON_CCOMPLEX 1
    1485             :   #else
    1486             :     #define CYTHON_CCOMPLEX 0
    1487             :   #endif
    1488             : #endif
    1489             : #if CYTHON_CCOMPLEX
    1490             :   #ifdef __cplusplus
    1491             :     #include <complex>
    1492             :   #else
    1493             :     #include <complex.h>
    1494             :   #endif
    1495             : #endif
    1496             : #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
    1497             :   #undef _Complex_I
    1498             :   #define _Complex_I 1.0fj
    1499             : #endif
    1500             : 
    1501             : /* #### Code section: filename_table ### */
    1502             : 
    1503             : static const char *__pyx_f[] = {
    1504             :   "_sosfilt.pyx",
    1505             :   "<stringsource>",
    1506             :   "__init__.cython-30.pxd",
    1507             :   "type.pxd",
    1508             : };
    1509             : /* #### Code section: utility_code_proto_before_types ### */
    1510             : /* ForceInitThreads.proto */
    1511             : #ifndef __PYX_FORCE_INIT_THREADS
    1512             :   #define __PYX_FORCE_INIT_THREADS 0
    1513             : #endif
    1514             : 
    1515             : /* NoFastGil.proto */
    1516             : #define __Pyx_PyGILState_Ensure PyGILState_Ensure
    1517             : #define __Pyx_PyGILState_Release PyGILState_Release
    1518             : #define __Pyx_FastGIL_Remember()
    1519             : #define __Pyx_FastGIL_Forget()
    1520             : #define __Pyx_FastGilFuncInit()
    1521             : 
    1522             : /* BufferFormatStructs.proto */
    1523             : struct __Pyx_StructField_;
    1524             : #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0)
    1525             : typedef struct {
    1526             :   const char* name;
    1527             :   struct __Pyx_StructField_* fields;
    1528             :   size_t size;
    1529             :   size_t arraysize[8];
    1530             :   int ndim;
    1531             :   char typegroup;
    1532             :   char is_unsigned;
    1533             :   int flags;
    1534             : } __Pyx_TypeInfo;
    1535             : typedef struct __Pyx_StructField_ {
    1536             :   __Pyx_TypeInfo* type;
    1537             :   const char* name;
    1538             :   size_t offset;
    1539             : } __Pyx_StructField;
    1540             : typedef struct {
    1541             :   __Pyx_StructField* field;
    1542             :   size_t parent_offset;
    1543             : } __Pyx_BufFmt_StackElem;
    1544             : typedef struct {
    1545             :   __Pyx_StructField root;
    1546             :   __Pyx_BufFmt_StackElem* head;
    1547             :   size_t fmt_offset;
    1548             :   size_t new_count, enc_count;
    1549             :   size_t struct_alignment;
    1550             :   int is_complex;
    1551             :   char enc_type;
    1552             :   char new_packmode;
    1553             :   char enc_packmode;
    1554             :   char is_valid_array;
    1555             : } __Pyx_BufFmt_Context;
    1556             : 
    1557             : /* Atomics.proto */
    1558             : #include <pythread.h>
    1559             : #ifndef CYTHON_ATOMICS
    1560             :     #define CYTHON_ATOMICS 1
    1561             : #endif
    1562             : #define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS
    1563             : #define __pyx_atomic_int_type int
    1564             : #define __pyx_nonatomic_int_type int
    1565             : #if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
    1566             :                         (__STDC_VERSION__ >= 201112L) &&\
    1567             :                         !defined(__STDC_NO_ATOMICS__))
    1568             :     #include <stdatomic.h>
    1569             : #elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
    1570             :                     (__cplusplus >= 201103L) ||\
    1571             :                     (defined(_MSC_VER) && _MSC_VER >= 1700)))
    1572             :     #include <atomic>
    1573             : #endif
    1574             : #if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
    1575             :                         (__STDC_VERSION__ >= 201112L) &&\
    1576             :                         !defined(__STDC_NO_ATOMICS__) &&\
    1577             :                        ATOMIC_INT_LOCK_FREE == 2)
    1578             :     #undef __pyx_atomic_int_type
    1579             :     #define __pyx_atomic_int_type atomic_int
    1580             :     #define __pyx_atomic_incr_aligned(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed)
    1581             :     #define __pyx_atomic_decr_aligned(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel)
    1582             :     #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
    1583             :         #pragma message ("Using standard C atomics")
    1584             :     #elif defined(__PYX_DEBUG_ATOMICS)
    1585             :         #warning "Using standard C atomics"
    1586             :     #endif
    1587             : #elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
    1588             :                     (__cplusplus >= 201103L) ||\
    1589             : \
    1590             :                     (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\
    1591             :                     ATOMIC_INT_LOCK_FREE == 2)
    1592             :     #undef __pyx_atomic_int_type
    1593             :     #define __pyx_atomic_int_type std::atomic_int
    1594             :     #define __pyx_atomic_incr_aligned(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed)
    1595             :     #define __pyx_atomic_decr_aligned(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel)
    1596             :     #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
    1597             :         #pragma message ("Using standard C++ atomics")
    1598             :     #elif defined(__PYX_DEBUG_ATOMICS)
    1599             :         #warning "Using standard C++ atomics"
    1600             :     #endif
    1601             : #elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\
    1602             :                     (__GNUC_MINOR__ > 1 ||\
    1603             :                     (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2))))
    1604             :     #define __pyx_atomic_incr_aligned(value) __sync_fetch_and_add(value, 1)
    1605             :     #define __pyx_atomic_decr_aligned(value) __sync_fetch_and_sub(value, 1)
    1606             :     #ifdef __PYX_DEBUG_ATOMICS
    1607             :         #warning "Using GNU atomics"
    1608             :     #endif
    1609             : #elif CYTHON_ATOMICS && defined(_MSC_VER)
    1610             :     #include <intrin.h>
    1611             :     #undef __pyx_atomic_int_type
    1612             :     #define __pyx_atomic_int_type long
    1613             :     #undef __pyx_nonatomic_int_type
    1614             :     #define __pyx_nonatomic_int_type long
    1615             :     #pragma intrinsic (_InterlockedExchangeAdd)
    1616             :     #define __pyx_atomic_incr_aligned(value) _InterlockedExchangeAdd(value, 1)
    1617             :     #define __pyx_atomic_decr_aligned(value) _InterlockedExchangeAdd(value, -1)
    1618             :     #ifdef __PYX_DEBUG_ATOMICS
    1619             :         #pragma message ("Using MSVC atomics")
    1620             :     #endif
    1621             : #else
    1622             :     #undef CYTHON_ATOMICS
    1623             :     #define CYTHON_ATOMICS 0
    1624             :     #ifdef __PYX_DEBUG_ATOMICS
    1625             :         #warning "Not using atomics"
    1626             :     #endif
    1627             : #endif
    1628             : #if CYTHON_ATOMICS
    1629             :     #define __pyx_add_acquisition_count(memview)\
    1630             :              __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview))
    1631             :     #define __pyx_sub_acquisition_count(memview)\
    1632             :             __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview))
    1633             : #else
    1634             :     #define __pyx_add_acquisition_count(memview)\
    1635             :             __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
    1636             :     #define __pyx_sub_acquisition_count(memview)\
    1637             :             __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
    1638             : #endif
    1639             : 
    1640             : /* MemviewSliceStruct.proto */
    1641             : struct __pyx_memoryview_obj;
    1642             : typedef struct {
    1643             :   struct __pyx_memoryview_obj *memview;
    1644             :   char *data;
    1645             :   Py_ssize_t shape[8];
    1646             :   Py_ssize_t strides[8];
    1647             :   Py_ssize_t suboffsets[8];
    1648             : } __Pyx_memviewslice;
    1649             : #define __Pyx_MemoryView_Len(m)  (m.shape[0])
    1650             : 
    1651             : /* #### Code section: numeric_typedefs ### */
    1652             : 
    1653             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
    1654             :  * # in Cython to enable them only on the right systems.
    1655             :  * 
    1656             :  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
    1657             :  * ctypedef npy_int16      int16_t
    1658             :  * ctypedef npy_int32      int32_t
    1659             :  */
    1660             : typedef npy_int8 __pyx_t_5numpy_int8_t;
    1661             : 
    1662             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770
    1663             :  * 
    1664             :  * ctypedef npy_int8       int8_t
    1665             :  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
    1666             :  * ctypedef npy_int32      int32_t
    1667             :  * ctypedef npy_int64      int64_t
    1668             :  */
    1669             : typedef npy_int16 __pyx_t_5numpy_int16_t;
    1670             : 
    1671             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
    1672             :  * ctypedef npy_int8       int8_t
    1673             :  * ctypedef npy_int16      int16_t
    1674             :  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
    1675             :  * ctypedef npy_int64      int64_t
    1676             :  * #ctypedef npy_int96      int96_t
    1677             :  */
    1678             : typedef npy_int32 __pyx_t_5numpy_int32_t;
    1679             : 
    1680             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
    1681             :  * ctypedef npy_int16      int16_t
    1682             :  * ctypedef npy_int32      int32_t
    1683             :  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
    1684             :  * #ctypedef npy_int96      int96_t
    1685             :  * #ctypedef npy_int128     int128_t
    1686             :  */
    1687             : typedef npy_int64 __pyx_t_5numpy_int64_t;
    1688             : 
    1689             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776
    1690             :  * #ctypedef npy_int128     int128_t
    1691             :  * 
    1692             :  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
    1693             :  * ctypedef npy_uint16     uint16_t
    1694             :  * ctypedef npy_uint32     uint32_t
    1695             :  */
    1696             : typedef npy_uint8 __pyx_t_5numpy_uint8_t;
    1697             : 
    1698             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777
    1699             :  * 
    1700             :  * ctypedef npy_uint8      uint8_t
    1701             :  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
    1702             :  * ctypedef npy_uint32     uint32_t
    1703             :  * ctypedef npy_uint64     uint64_t
    1704             :  */
    1705             : typedef npy_uint16 __pyx_t_5numpy_uint16_t;
    1706             : 
    1707             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778
    1708             :  * ctypedef npy_uint8      uint8_t
    1709             :  * ctypedef npy_uint16     uint16_t
    1710             :  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
    1711             :  * ctypedef npy_uint64     uint64_t
    1712             :  * #ctypedef npy_uint96     uint96_t
    1713             :  */
    1714             : typedef npy_uint32 __pyx_t_5numpy_uint32_t;
    1715             : 
    1716             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
    1717             :  * ctypedef npy_uint16     uint16_t
    1718             :  * ctypedef npy_uint32     uint32_t
    1719             :  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
    1720             :  * #ctypedef npy_uint96     uint96_t
    1721             :  * #ctypedef npy_uint128    uint128_t
    1722             :  */
    1723             : typedef npy_uint64 __pyx_t_5numpy_uint64_t;
    1724             : 
    1725             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
    1726             :  * #ctypedef npy_uint128    uint128_t
    1727             :  * 
    1728             :  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
    1729             :  * ctypedef npy_float64    float64_t
    1730             :  * #ctypedef npy_float80    float80_t
    1731             :  */
    1732             : typedef npy_float32 __pyx_t_5numpy_float32_t;
    1733             : 
    1734             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784
    1735             :  * 
    1736             :  * ctypedef npy_float32    float32_t
    1737             :  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
    1738             :  * #ctypedef npy_float80    float80_t
    1739             :  * #ctypedef npy_float128   float128_t
    1740             :  */
    1741             : typedef npy_float64 __pyx_t_5numpy_float64_t;
    1742             : 
    1743             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791
    1744             :  * ctypedef double complex complex128_t
    1745             :  * 
    1746             :  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
    1747             :  * ctypedef npy_ulonglong  ulonglong_t
    1748             :  * 
    1749             :  */
    1750             : typedef npy_longlong __pyx_t_5numpy_longlong_t;
    1751             : 
    1752             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792
    1753             :  * 
    1754             :  * ctypedef npy_longlong   longlong_t
    1755             :  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
    1756             :  * 
    1757             :  * ctypedef npy_intp       intp_t
    1758             :  */
    1759             : typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
    1760             : 
    1761             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
    1762             :  * ctypedef npy_ulonglong  ulonglong_t
    1763             :  * 
    1764             :  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
    1765             :  * ctypedef npy_uintp      uintp_t
    1766             :  * 
    1767             :  */
    1768             : typedef npy_intp __pyx_t_5numpy_intp_t;
    1769             : 
    1770             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
    1771             :  * 
    1772             :  * ctypedef npy_intp       intp_t
    1773             :  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
    1774             :  * 
    1775             :  * ctypedef npy_double     float_t
    1776             :  */
    1777             : typedef npy_uintp __pyx_t_5numpy_uintp_t;
    1778             : 
    1779             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
    1780             :  * ctypedef npy_uintp      uintp_t
    1781             :  * 
    1782             :  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
    1783             :  * ctypedef npy_double     double_t
    1784             :  * ctypedef npy_longdouble longdouble_t
    1785             :  */
    1786             : typedef npy_double __pyx_t_5numpy_float_t;
    1787             : 
    1788             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
    1789             :  * 
    1790             :  * ctypedef npy_double     float_t
    1791             :  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
    1792             :  * ctypedef npy_longdouble longdouble_t
    1793             :  * 
    1794             :  */
    1795             : typedef npy_double __pyx_t_5numpy_double_t;
    1796             : 
    1797             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":799
    1798             :  * ctypedef npy_double     float_t
    1799             :  * ctypedef npy_double     double_t
    1800             :  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
    1801             :  * 
    1802             :  * ctypedef float complex       cfloat_t
    1803             :  */
    1804             : typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
    1805             : /* #### Code section: complex_type_declarations ### */
    1806             : /* Declarations.proto */
    1807             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    1808             :   #ifdef __cplusplus
    1809             :     typedef ::std::complex< float > __pyx_t_float_complex;
    1810             :   #else
    1811             :     typedef float _Complex __pyx_t_float_complex;
    1812             :   #endif
    1813             : #else
    1814             :     typedef struct { float real, imag; } __pyx_t_float_complex;
    1815             : #endif
    1816             : static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
    1817             : 
    1818             : /* Declarations.proto */
    1819             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    1820             :   #ifdef __cplusplus
    1821             :     typedef ::std::complex< double > __pyx_t_double_complex;
    1822             :   #else
    1823             :     typedef double _Complex __pyx_t_double_complex;
    1824             :   #endif
    1825             : #else
    1826             :     typedef struct { double real, imag; } __pyx_t_double_complex;
    1827             : #endif
    1828             : static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
    1829             : 
    1830             : /* Declarations.proto */
    1831             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    1832             :   #ifdef __cplusplus
    1833             :     typedef ::std::complex< long double > __pyx_t_long_double_complex;
    1834             :   #else
    1835             :     typedef long double _Complex __pyx_t_long_double_complex;
    1836             :   #endif
    1837             : #else
    1838             :     typedef struct { long double real, imag; } __pyx_t_long_double_complex;
    1839             : #endif
    1840             : static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double, long double);
    1841             : 
    1842             : /* #### Code section: type_declarations ### */
    1843             : 
    1844             : /*--- Type declarations ---*/
    1845             : struct __pyx_array_obj;
    1846             : struct __pyx_MemviewEnum_obj;
    1847             : struct __pyx_memoryview_obj;
    1848             : struct __pyx_memoryviewslice_obj;
    1849             : 
    1850             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1095
    1851             :  * 
    1852             :  * # Iterator API added in v1.6
    1853             :  * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil             # <<<<<<<<<<<<<<
    1854             :  * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil
    1855             :  * 
    1856             :  */
    1857             : typedef int (*__pyx_t_5numpy_NpyIter_IterNextFunc)(NpyIter *);
    1858             : 
    1859             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
    1860             :  * # Iterator API added in v1.6
    1861             :  * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil
    1862             :  * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil             # <<<<<<<<<<<<<<
    1863             :  * 
    1864             :  * cdef extern from "numpy/arrayobject.h":
    1865             :  */
    1866             : typedef void (*__pyx_t_5numpy_NpyIter_GetMultiIndexFunc)(NpyIter *, npy_intp *);
    1867             : struct __pyx_defaults;
    1868             : typedef struct __pyx_defaults __pyx_defaults;
    1869             : struct __pyx_defaults {
    1870             :   PyObject *__pyx_arg__fused_sigindex;
    1871             : };
    1872             : 
    1873             : /* "View.MemoryView":114
    1874             :  * @cython.collection_type("sequence")
    1875             :  * @cname("__pyx_array")
    1876             :  * cdef class array:             # <<<<<<<<<<<<<<
    1877             :  * 
    1878             :  *     cdef:
    1879             :  */
    1880             : struct __pyx_array_obj {
    1881             :   PyObject_HEAD
    1882             :   struct __pyx_vtabstruct_array *__pyx_vtab;
    1883             :   char *data;
    1884             :   Py_ssize_t len;
    1885             :   char *format;
    1886             :   int ndim;
    1887             :   Py_ssize_t *_shape;
    1888             :   Py_ssize_t *_strides;
    1889             :   Py_ssize_t itemsize;
    1890             :   PyObject *mode;
    1891             :   PyObject *_format;
    1892             :   void (*callback_free_data)(void *);
    1893             :   int free_data;
    1894             :   int dtype_is_object;
    1895             : };
    1896             : 
    1897             : 
    1898             : /* "View.MemoryView":302
    1899             :  * 
    1900             :  * @cname('__pyx_MemviewEnum')
    1901             :  * cdef class Enum(object):             # <<<<<<<<<<<<<<
    1902             :  *     cdef object name
    1903             :  *     def __init__(self, name):
    1904             :  */
    1905             : struct __pyx_MemviewEnum_obj {
    1906             :   PyObject_HEAD
    1907             :   PyObject *name;
    1908             : };
    1909             : 
    1910             : 
    1911             : /* "View.MemoryView":337
    1912             :  * 
    1913             :  * @cname('__pyx_memoryview')
    1914             :  * cdef class memoryview:             # <<<<<<<<<<<<<<
    1915             :  * 
    1916             :  *     cdef object obj
    1917             :  */
    1918             : struct __pyx_memoryview_obj {
    1919             :   PyObject_HEAD
    1920             :   struct __pyx_vtabstruct_memoryview *__pyx_vtab;
    1921             :   PyObject *obj;
    1922             :   PyObject *_size;
    1923             :   PyObject *_array_interface;
    1924             :   PyThread_type_lock lock;
    1925             :   __pyx_atomic_int_type acquisition_count;
    1926             :   Py_buffer view;
    1927             :   int flags;
    1928             :   int dtype_is_object;
    1929             :   __Pyx_TypeInfo *typeinfo;
    1930             : };
    1931             : 
    1932             : 
    1933             : /* "View.MemoryView":952
    1934             :  * @cython.collection_type("sequence")
    1935             :  * @cname('__pyx_memoryviewslice')
    1936             :  * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
    1937             :  *     "Internal class for passing memoryview slices to Python"
    1938             :  * 
    1939             :  */
    1940             : struct __pyx_memoryviewslice_obj {
    1941             :   struct __pyx_memoryview_obj __pyx_base;
    1942             :   __Pyx_memviewslice from_slice;
    1943             :   PyObject *from_object;
    1944             :   PyObject *(*to_object_func)(char *);
    1945             :   int (*to_dtype_func)(char *, PyObject *);
    1946             : };
    1947             : 
    1948             : 
    1949             : 
    1950             : /* "View.MemoryView":114
    1951             :  * @cython.collection_type("sequence")
    1952             :  * @cname("__pyx_array")
    1953             :  * cdef class array:             # <<<<<<<<<<<<<<
    1954             :  * 
    1955             :  *     cdef:
    1956             :  */
    1957             : 
    1958             : struct __pyx_vtabstruct_array {
    1959             :   PyObject *(*get_memview)(struct __pyx_array_obj *);
    1960             : };
    1961             : static struct __pyx_vtabstruct_array *__pyx_vtabptr_array;
    1962             : 
    1963             : 
    1964             : /* "View.MemoryView":337
    1965             :  * 
    1966             :  * @cname('__pyx_memoryview')
    1967             :  * cdef class memoryview:             # <<<<<<<<<<<<<<
    1968             :  * 
    1969             :  *     cdef object obj
    1970             :  */
    1971             : 
    1972             : struct __pyx_vtabstruct_memoryview {
    1973             :   char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *);
    1974             :   PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *);
    1975             :   PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
    1976             :   PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *);
    1977             :   PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
    1978             :   PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *);
    1979             :   PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *);
    1980             :   PyObject *(*_get_base)(struct __pyx_memoryview_obj *);
    1981             : };
    1982             : static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview;
    1983             : 
    1984             : 
    1985             : /* "View.MemoryView":952
    1986             :  * @cython.collection_type("sequence")
    1987             :  * @cname('__pyx_memoryviewslice')
    1988             :  * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
    1989             :  *     "Internal class for passing memoryview slices to Python"
    1990             :  * 
    1991             :  */
    1992             : 
    1993             : struct __pyx_vtabstruct__memoryviewslice {
    1994             :   struct __pyx_vtabstruct_memoryview __pyx_base;
    1995             : };
    1996             : static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice;
    1997             : /* #### Code section: utility_code_proto ### */
    1998             : 
    1999             : /* --- Runtime support code (head) --- */
    2000             : /* Refnanny.proto */
    2001             : #ifndef CYTHON_REFNANNY
    2002             :   #define CYTHON_REFNANNY 0
    2003             : #endif
    2004             : #if CYTHON_REFNANNY
    2005             :   typedef struct {
    2006             :     void (*INCREF)(void*, PyObject*, Py_ssize_t);
    2007             :     void (*DECREF)(void*, PyObject*, Py_ssize_t);
    2008             :     void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    2009             :     void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    2010             :     void* (*SetupContext)(const char*, Py_ssize_t, const char*);
    2011             :     void (*FinishContext)(void**);
    2012             :   } __Pyx_RefNannyAPIStruct;
    2013             :   static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
    2014             :   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
    2015             :   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
    2016             : #ifdef WITH_THREAD
    2017             :   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
    2018             :           if (acquire_gil) {\
    2019             :               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
    2020             :               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
    2021             :               PyGILState_Release(__pyx_gilstate_save);\
    2022             :           } else {\
    2023             :               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
    2024             :           }
    2025             :   #define __Pyx_RefNannyFinishContextNogil() {\
    2026             :               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
    2027             :               __Pyx_RefNannyFinishContext();\
    2028             :               PyGILState_Release(__pyx_gilstate_save);\
    2029             :           }
    2030             : #else
    2031             :   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
    2032             :           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
    2033             :   #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
    2034             : #endif
    2035             :   #define __Pyx_RefNannyFinishContextNogil() {\
    2036             :               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
    2037             :               __Pyx_RefNannyFinishContext();\
    2038             :               PyGILState_Release(__pyx_gilstate_save);\
    2039             :           }
    2040             :   #define __Pyx_RefNannyFinishContext()\
    2041             :           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
    2042             :   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
    2043             :   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
    2044             :   #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
    2045             :   #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
    2046             :   #define __Pyx_XINCREF(r)  do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
    2047             :   #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
    2048             :   #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
    2049             :   #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
    2050             : #else
    2051             :   #define __Pyx_RefNannyDeclarations
    2052             :   #define __Pyx_RefNannySetupContext(name, acquire_gil)
    2053             :   #define __Pyx_RefNannyFinishContextNogil()
    2054             :   #define __Pyx_RefNannyFinishContext()
    2055             :   #define __Pyx_INCREF(r) Py_INCREF(r)
    2056             :   #define __Pyx_DECREF(r) Py_DECREF(r)
    2057             :   #define __Pyx_GOTREF(r)
    2058             :   #define __Pyx_GIVEREF(r)
    2059             :   #define __Pyx_XINCREF(r) Py_XINCREF(r)
    2060             :   #define __Pyx_XDECREF(r) Py_XDECREF(r)
    2061             :   #define __Pyx_XGOTREF(r)
    2062             :   #define __Pyx_XGIVEREF(r)
    2063             : #endif
    2064             : #define __Pyx_Py_XDECREF_SET(r, v) do {\
    2065             :         PyObject *tmp = (PyObject *) r;\
    2066             :         r = v; Py_XDECREF(tmp);\
    2067             :     } while (0)
    2068             : #define __Pyx_XDECREF_SET(r, v) do {\
    2069             :         PyObject *tmp = (PyObject *) r;\
    2070             :         r = v; __Pyx_XDECREF(tmp);\
    2071             :     } while (0)
    2072             : #define __Pyx_DECREF_SET(r, v) do {\
    2073             :         PyObject *tmp = (PyObject *) r;\
    2074             :         r = v; __Pyx_DECREF(tmp);\
    2075             :     } while (0)
    2076             : #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
    2077             : #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
    2078             : 
    2079             : /* PyErrExceptionMatches.proto */
    2080             : #if CYTHON_FAST_THREAD_STATE
    2081             : #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
    2082             : static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
    2083             : #else
    2084             : #define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
    2085             : #endif
    2086             : 
    2087             : /* PyThreadStateGet.proto */
    2088             : #if CYTHON_FAST_THREAD_STATE
    2089             : #define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
    2090             : #define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
    2091             : #if PY_VERSION_HEX >= 0x030C00A6
    2092             : #define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
    2093             : #define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
    2094             : #else
    2095             : #define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
    2096             : #define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
    2097             : #endif
    2098             : #else
    2099             : #define __Pyx_PyThreadState_declare
    2100             : #define __Pyx_PyThreadState_assign
    2101             : #define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
    2102             : #define __Pyx_PyErr_CurrentExceptionType()  PyErr_Occurred()
    2103             : #endif
    2104             : 
    2105             : /* PyErrFetchRestore.proto */
    2106             : #if CYTHON_FAST_THREAD_STATE
    2107             : #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
    2108             : #define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
    2109             : #define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
    2110             : #define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
    2111             : #define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
    2112             : static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
    2113             : static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
    2114             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
    2115             : #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
    2116             : #else
    2117             : #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
    2118             : #endif
    2119             : #else
    2120             : #define __Pyx_PyErr_Clear() PyErr_Clear()
    2121             : #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
    2122             : #define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
    2123             : #define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
    2124             : #define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
    2125             : #define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
    2126             : #define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
    2127             : #define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
    2128             : #endif
    2129             : 
    2130             : /* PyObjectGetAttrStr.proto */
    2131             : #if CYTHON_USE_TYPE_SLOTS
    2132             : static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
    2133             : #else
    2134             : #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
    2135             : #endif
    2136             : 
    2137             : /* PyObjectGetAttrStrNoError.proto */
    2138             : static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
    2139             : 
    2140             : /* GetBuiltinName.proto */
    2141             : static PyObject *__Pyx_GetBuiltinName(PyObject *name);
    2142             : 
    2143             : /* TupleAndListFromArray.proto */
    2144             : #if CYTHON_COMPILING_IN_CPYTHON
    2145             : static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
    2146             : static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
    2147             : #endif
    2148             : 
    2149             : /* IncludeStringH.proto */
    2150             : #include <string.h>
    2151             : 
    2152             : /* BytesEquals.proto */
    2153             : static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
    2154             : 
    2155             : /* UnicodeEquals.proto */
    2156             : static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
    2157             : 
    2158             : /* fastcall.proto */
    2159             : #if CYTHON_AVOID_BORROWED_REFS
    2160             :     #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
    2161             : #elif CYTHON_ASSUME_SAFE_MACROS
    2162             :     #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
    2163             : #else
    2164             :     #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
    2165             : #endif
    2166             : #if CYTHON_AVOID_BORROWED_REFS
    2167             :     #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
    2168             :     #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
    2169             : #else
    2170             :     #define __Pyx_Arg_NewRef_VARARGS(arg) arg
    2171             :     #define __Pyx_Arg_XDECREF_VARARGS(arg)
    2172             : #endif
    2173             : #define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
    2174             : #define __Pyx_KwValues_VARARGS(args, nargs) NULL
    2175             : #define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
    2176             : #define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
    2177             : #if CYTHON_METH_FASTCALL
    2178             :     #define __Pyx_Arg_FASTCALL(args, i) args[i]
    2179             :     #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
    2180             :     #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    2181             :     static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
    2182             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    2183             :     CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
    2184             :   #else
    2185             :     #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
    2186             :   #endif
    2187             :     #define __Pyx_Arg_NewRef_FASTCALL(arg) arg  /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
    2188             :                                                    to have the same reference counting */
    2189             :     #define __Pyx_Arg_XDECREF_FASTCALL(arg)
    2190             : #else
    2191             :     #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
    2192             :     #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    2193             :     #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    2194             :     #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    2195             :     #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
    2196             :     #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
    2197             :     #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
    2198             : #endif
    2199             : #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    2200             : #define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
    2201             : #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
    2202             : #else
    2203             : #define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
    2204             : #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
    2205             : #endif
    2206             : 
    2207             : /* RaiseArgTupleInvalid.proto */
    2208             : static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    2209             :     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
    2210             : 
    2211             : /* RaiseDoubleKeywords.proto */
    2212             : static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
    2213             : 
    2214             : /* ParseKeywords.proto */
    2215             : static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
    2216             :     PyObject **argnames[],
    2217             :     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
    2218             :     const char* function_name);
    2219             : 
    2220             : /* ArgTypeTest.proto */
    2221             : #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    2222             :     ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
    2223             :         __Pyx__ArgTypeTest(obj, type, name, exact))
    2224             : static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
    2225             : 
    2226             : /* RaiseException.proto */
    2227             : static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
    2228             : 
    2229             : /* PyFunctionFastCall.proto */
    2230             : #if CYTHON_FAST_PYCALL
    2231             : #if !CYTHON_VECTORCALL
    2232             : #define __Pyx_PyFunction_FastCall(func, args, nargs)\
    2233             :     __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
    2234             : static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
    2235             : #endif
    2236             : #define __Pyx_BUILD_ASSERT_EXPR(cond)\
    2237             :     (sizeof(char [1 - 2*!(cond)]) - 1)
    2238             : #ifndef Py_MEMBER_SIZE
    2239             : #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
    2240             : #endif
    2241             : #if !CYTHON_VECTORCALL
    2242             : #if PY_VERSION_HEX >= 0x03080000
    2243             :   #include "frameobject.h"
    2244             : #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
    2245             :   #ifndef Py_BUILD_CORE
    2246             :     #define Py_BUILD_CORE 1
    2247             :   #endif
    2248             :   #include "internal/pycore_frame.h"
    2249             : #endif
    2250             :   #define __Pxy_PyFrame_Initialize_Offsets()
    2251             :   #define __Pyx_PyFrame_GetLocalsplus(frame)  ((frame)->f_localsplus)
    2252             : #else
    2253             :   static size_t __pyx_pyframe_localsplus_offset = 0;
    2254             :   #include "frameobject.h"
    2255             :   #define __Pxy_PyFrame_Initialize_Offsets()\
    2256             :     ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
    2257             :      (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
    2258             :   #define __Pyx_PyFrame_GetLocalsplus(frame)\
    2259             :     (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
    2260             : #endif
    2261             : #endif
    2262             : #endif
    2263             : 
    2264             : /* PyObjectCall.proto */
    2265             : #if CYTHON_COMPILING_IN_CPYTHON
    2266             : static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
    2267             : #else
    2268             : #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
    2269             : #endif
    2270             : 
    2271             : /* PyObjectCallMethO.proto */
    2272             : #if CYTHON_COMPILING_IN_CPYTHON
    2273             : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
    2274             : #endif
    2275             : 
    2276             : /* PyObjectFastCall.proto */
    2277             : #define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
    2278             : static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);
    2279             : 
    2280             : /* RaiseUnexpectedTypeError.proto */
    2281             : static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);
    2282             : 
    2283             : /* GCCDiagnostics.proto */
    2284             : #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
    2285             : #define __Pyx_HAS_GCC_DIAGNOSTIC
    2286             : #endif
    2287             : 
    2288             : /* BuildPyUnicode.proto */
    2289             : static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
    2290             :                                                 int prepend_sign, char padding_char);
    2291             : 
    2292             : /* CIntToPyUnicode.proto */
    2293             : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);
    2294             : 
    2295             : /* CIntToPyUnicode.proto */
    2296             : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char);
    2297             : 
    2298             : /* JoinPyUnicode.proto */
    2299             : static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
    2300             :                                       Py_UCS4 max_char);
    2301             : 
    2302             : /* StrEquals.proto */
    2303             : #if PY_MAJOR_VERSION >= 3
    2304             : #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
    2305             : #else
    2306             : #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
    2307             : #endif
    2308             : 
    2309             : /* PyObjectFormatSimple.proto */
    2310             : #if CYTHON_COMPILING_IN_PYPY
    2311             :     #define __Pyx_PyObject_FormatSimple(s, f) (\
    2312             :         likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
    2313             :         PyObject_Format(s, f))
    2314             : #elif PY_MAJOR_VERSION < 3
    2315             :     #define __Pyx_PyObject_FormatSimple(s, f) (\
    2316             :         likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
    2317             :         likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
    2318             :         PyObject_Format(s, f))
    2319             : #elif CYTHON_USE_TYPE_SLOTS
    2320             :     #define __Pyx_PyObject_FormatSimple(s, f) (\
    2321             :         likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
    2322             :         likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\
    2323             :         likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\
    2324             :         PyObject_Format(s, f))
    2325             : #else
    2326             :     #define __Pyx_PyObject_FormatSimple(s, f) (\
    2327             :         likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
    2328             :         PyObject_Format(s, f))
    2329             : #endif
    2330             : 
    2331             : CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
    2332             : static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/
    2333             : /* GetAttr.proto */
    2334             : static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
    2335             : 
    2336             : /* GetItemInt.proto */
    2337             : #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    2338             :     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    2339             :     __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    2340             :     (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
    2341             :                __Pyx_GetItemInt_Generic(o, to_py_func(i))))
    2342             : #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    2343             :     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    2344             :     __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    2345             :     (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
    2346             : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
    2347             :                                                               int wraparound, int boundscheck);
    2348             : #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    2349             :     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    2350             :     __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    2351             :     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
    2352             : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
    2353             :                                                               int wraparound, int boundscheck);
    2354             : static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
    2355             : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
    2356             :                                                      int is_list, int wraparound, int boundscheck);
    2357             : 
    2358             : /* PyObjectCallOneArg.proto */
    2359             : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
    2360             : 
    2361             : /* ObjectGetItem.proto */
    2362             : #if CYTHON_USE_TYPE_SLOTS
    2363             : static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
    2364             : #else
    2365             : #define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
    2366             : #endif
    2367             : 
    2368             : /* KeywordStringCheck.proto */
    2369             : static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
    2370             : 
    2371             : /* DivInt[Py_ssize_t].proto */
    2372             : static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t);
    2373             : 
    2374             : /* UnaryNegOverflows.proto */
    2375             : #define __Pyx_UNARY_NEG_WOULD_OVERFLOW(x)\
    2376             :         (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
    2377             : 
    2378             : /* GetAttr3.proto */
    2379             : static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
    2380             : 
    2381             : /* PyDictVersioning.proto */
    2382             : #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
    2383             : #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
    2384             : #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
    2385             : #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    2386             :     (version_var) = __PYX_GET_DICT_VERSION(dict);\
    2387             :     (cache_var) = (value);
    2388             : #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    2389             :     static PY_UINT64_T __pyx_dict_version = 0;\
    2390             :     static PyObject *__pyx_dict_cached_value = NULL;\
    2391             :     if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
    2392             :         (VAR) = __pyx_dict_cached_value;\
    2393             :     } else {\
    2394             :         (VAR) = __pyx_dict_cached_value = (LOOKUP);\
    2395             :         __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    2396             :     }\
    2397             : }
    2398             : static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
    2399             : static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
    2400             : static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
    2401             : #else
    2402             : #define __PYX_GET_DICT_VERSION(dict)  (0)
    2403             : #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
    2404             : #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
    2405             : #endif
    2406             : 
    2407             : /* GetModuleGlobalName.proto */
    2408             : #if CYTHON_USE_DICT_VERSIONS
    2409             : #define __Pyx_GetModuleGlobalName(var, name)  do {\
    2410             :     static PY_UINT64_T __pyx_dict_version = 0;\
    2411             :     static PyObject *__pyx_dict_cached_value = NULL;\
    2412             :     (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
    2413             :         (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
    2414             :         __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
    2415             : } while(0)
    2416             : #define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    2417             :     PY_UINT64_T __pyx_dict_version;\
    2418             :     PyObject *__pyx_dict_cached_value;\
    2419             :     (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
    2420             : } while(0)
    2421             : static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
    2422             : #else
    2423             : #define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
    2424             : #define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
    2425             : static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
    2426             : #endif
    2427             : 
    2428             : /* AssertionsEnabled.proto */
    2429             : #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
    2430             :   #define __Pyx_init_assertions_enabled()  (0)
    2431             :   #define __pyx_assertions_enabled()  (1)
    2432             : #elif CYTHON_COMPILING_IN_LIMITED_API  ||  (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000)
    2433             :   static int __pyx_assertions_enabled_flag;
    2434             :   #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
    2435           1 :   static int __Pyx_init_assertions_enabled(void) {
    2436           1 :     PyObject *builtins, *debug, *debug_str;
    2437           1 :     int flag;
    2438           1 :     builtins = PyEval_GetBuiltins();
    2439           1 :     if (!builtins) goto bad;
    2440           1 :     debug_str = PyUnicode_FromStringAndSize("__debug__", 9);
    2441           1 :     if (!debug_str) goto bad;
    2442           1 :     debug = PyObject_GetItem(builtins, debug_str);
    2443           1 :     Py_DECREF(debug_str);
    2444           1 :     if (!debug) goto bad;
    2445           1 :     flag = PyObject_IsTrue(debug);
    2446           1 :     Py_DECREF(debug);
    2447           1 :     if (flag == -1) goto bad;
    2448           1 :     __pyx_assertions_enabled_flag = flag;
    2449           1 :     return 0;
    2450           0 :   bad:
    2451           0 :     __pyx_assertions_enabled_flag = 1;
    2452           0 :     return -1;
    2453             :   }
    2454             : #else
    2455             :   #define __Pyx_init_assertions_enabled()  (0)
    2456             :   #define __pyx_assertions_enabled()  (!Py_OptimizeFlag)
    2457             : #endif
    2458             : 
    2459             : /* RaiseTooManyValuesToUnpack.proto */
    2460             : static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
    2461             : 
    2462             : /* RaiseNeedMoreValuesToUnpack.proto */
    2463             : static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
    2464             : 
    2465             : /* RaiseNoneIterError.proto */
    2466             : static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
    2467             : 
    2468             : /* ExtTypeTest.proto */
    2469             : static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
    2470             : 
    2471             : /* GetTopmostException.proto */
    2472             : #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
    2473             : static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
    2474             : #endif
    2475             : 
    2476             : /* SaveResetException.proto */
    2477             : #if CYTHON_FAST_THREAD_STATE
    2478             : #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
    2479             : static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
    2480             : #define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
    2481             : static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
    2482             : #else
    2483             : #define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
    2484             : #define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
    2485             : #endif
    2486             : 
    2487             : /* GetException.proto */
    2488             : #if CYTHON_FAST_THREAD_STATE
    2489             : #define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
    2490             : static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
    2491             : #else
    2492             : static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
    2493             : #endif
    2494             : 
    2495             : /* SwapException.proto */
    2496             : #if CYTHON_FAST_THREAD_STATE
    2497             : #define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
    2498             : static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
    2499             : #else
    2500             : static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
    2501             : #endif
    2502             : 
    2503             : /* Import.proto */
    2504             : static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
    2505             : 
    2506             : /* ImportDottedModule.proto */
    2507             : static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
    2508             : #if PY_MAJOR_VERSION >= 3
    2509             : static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
    2510             : #endif
    2511             : 
    2512             : /* FastTypeChecks.proto */
    2513             : #if CYTHON_COMPILING_IN_CPYTHON
    2514             : #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
    2515             : #define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
    2516             : static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
    2517             : static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
    2518             : static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
    2519             : static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
    2520             : #else
    2521             : #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
    2522             : #define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
    2523             : #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
    2524             : #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
    2525             : #endif
    2526             : #define __Pyx_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
    2527             : #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
    2528             : 
    2529             : CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
    2530             : /* ListCompAppend.proto */
    2531             : #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
    2532           0 : static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    2533           0 :     PyListObject* L = (PyListObject*) list;
    2534           0 :     Py_ssize_t len = Py_SIZE(list);
    2535           0 :     if (likely(L->allocated > len)) {
    2536           0 :         Py_INCREF(x);
    2537             :         #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    2538             :         L->ob_item[len] = x;
    2539             :         #else
    2540           0 :         PyList_SET_ITEM(list, len, x);
    2541             :         #endif
    2542           0 :         __Pyx_SET_SIZE(list, len + 1);
    2543           0 :         return 0;
    2544             :     }
    2545           0 :     return PyList_Append(list, x);
    2546             : }
    2547             : #else
    2548             : #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
    2549             : #endif
    2550             : 
    2551             : /* PySequenceMultiply.proto */
    2552             : #define __Pyx_PySequence_Multiply_Left(mul, seq)  __Pyx_PySequence_Multiply(seq, mul)
    2553             : static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul);
    2554             : 
    2555             : /* SetItemInt.proto */
    2556             : #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    2557             :     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    2558             :     __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    2559             :     (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
    2560             :                __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
    2561             : static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
    2562             : static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
    2563             :                                                int is_list, int wraparound, int boundscheck);
    2564             : 
    2565             : /* RaiseUnboundLocalError.proto */
    2566             : static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
    2567             : 
    2568             : /* DivInt[long].proto */
    2569             : static CYTHON_INLINE long __Pyx_div_long(long, long);
    2570             : 
    2571             : /* PySequenceContains.proto */
    2572           0 : static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    2573           0 :     int result = PySequence_Contains(seq, item);
    2574           0 :     return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
    2575             : }
    2576             : 
    2577             : /* ImportFrom.proto */
    2578             : static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
    2579             : 
    2580             : /* HasAttr.proto */
    2581             : static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
    2582             : 
    2583             : /* PyDictContains.proto */
    2584           0 : static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    2585           0 :     int result = PyDict_Contains(dict, item);
    2586           0 :     return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
    2587             : }
    2588             : 
    2589             : /* DictGetItem.proto */
    2590             : #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
    2591             : static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
    2592             : #define __Pyx_PyObject_Dict_GetItem(obj, name)\
    2593             :     (likely(PyDict_CheckExact(obj)) ?\
    2594             :      __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
    2595             : #else
    2596             : #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
    2597             : #define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
    2598             : #endif
    2599             : 
    2600             : /* UnicodeAsUCS4.proto */
    2601             : static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject*);
    2602             : 
    2603             : /* object_ord.proto */
    2604             : #if PY_MAJOR_VERSION >= 3
    2605             : #define __Pyx_PyObject_Ord(c)\
    2606             :     (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c))
    2607             : #else
    2608             : #define __Pyx_PyObject_Ord(c) __Pyx__PyObject_Ord(c)
    2609             : #endif
    2610             : static long __Pyx__PyObject_Ord(PyObject* c);
    2611             : 
    2612             : /* memoryview_get_from_buffer.proto */
    2613             : #if !CYTHON_COMPILING_IN_LIMITED_API || CYTHON_LIMITED_API >= 0x030b0000
    2614             : #define __Pyx_PyMemoryView_Get_itemsize(o) PyMemoryView_GET_BUFFER(o)->itemsize
    2615             : #else
    2616             :  // can't get format like this unfortunately. It's unicode via getattr
    2617             : static Py_ssize_t __Pyx_PyMemoryView_Get_itemsize(PyObject *obj);
    2618             : #endif
    2619             : 
    2620             : /* memoryview_get_from_buffer.proto */
    2621             : #if !CYTHON_COMPILING_IN_LIMITED_API || CYTHON_LIMITED_API >= 0x030b0000
    2622             : #define __Pyx_PyMemoryView_Get_ndim(o) PyMemoryView_GET_BUFFER(o)->ndim
    2623             : #else
    2624             :  // can't get format like this unfortunately. It's unicode via getattr
    2625             : static int __Pyx_PyMemoryView_Get_ndim(PyObject *obj);
    2626             : #endif
    2627             : 
    2628             : /* IterFinish.proto */
    2629             : static CYTHON_INLINE int __Pyx_IterFinish(void);
    2630             : 
    2631             : /* PyObjectCallNoArg.proto */
    2632             : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
    2633             : 
    2634             : /* PyObjectGetMethod.proto */
    2635             : static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
    2636             : 
    2637             : /* PyObjectCallMethod0.proto */
    2638             : static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
    2639             : 
    2640             : /* UnpackItemEndCheck.proto */
    2641             : static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
    2642             : 
    2643             : /* UnpackTupleError.proto */
    2644             : static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
    2645             : 
    2646             : /* UnpackTuple2.proto */
    2647             : #define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    2648             :     (likely(is_tuple || PyTuple_Check(tuple)) ?\
    2649             :         (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
    2650             :             __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
    2651             :             (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
    2652             :         __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
    2653             : static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    2654             :     PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
    2655             : static int __Pyx_unpack_tuple2_generic(
    2656             :     PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);
    2657             : 
    2658             : /* dict_iter.proto */
    2659             : static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
    2660             :                                                    Py_ssize_t* p_orig_length, int* p_is_dict);
    2661             : static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
    2662             :                                               PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
    2663             : 
    2664             : /* ListExtend.proto */
    2665           0 : static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
    2666             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    2667           0 :     PyObject* none = _PyList_Extend((PyListObject*)L, v);
    2668           0 :     if (unlikely(!none))
    2669             :         return -1;
    2670           0 :     Py_DECREF(none);
    2671             :     return 0;
    2672             : #else
    2673             :     return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
    2674             : #endif
    2675             : }
    2676             : 
    2677             : /* py_dict_values.proto */
    2678             : static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
    2679             : 
    2680             : /* UnpackUnboundCMethod.proto */
    2681             : typedef struct {
    2682             :     PyObject *type;
    2683             :     PyObject **method_name;
    2684             :     PyCFunction func;
    2685             :     PyObject *method;
    2686             :     int flag;
    2687             : } __Pyx_CachedCFunction;
    2688             : 
    2689             : /* CallUnboundCMethod0.proto */
    2690             : static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
    2691             : #if CYTHON_COMPILING_IN_CPYTHON
    2692             : #define __Pyx_CallUnboundCMethod0(cfunc, self)\
    2693             :     (likely((cfunc)->func) ?\
    2694             :         (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
    2695             :          (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
    2696             :             (PY_VERSION_HEX >= 0x030700A0 ?\
    2697             :                 (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
    2698             :                 (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
    2699             :           (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
    2700             :             (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
    2701             :             (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
    2702             :                ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
    2703             :                __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
    2704             :         __Pyx__CallUnboundCMethod0(cfunc, self))
    2705             : #else
    2706             : #define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
    2707             : #endif
    2708             : 
    2709             : /* dict_getitem_default.proto */
    2710             : static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
    2711             : 
    2712             : /* CallUnboundCMethod1.proto */
    2713             : static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
    2714             : #if CYTHON_COMPILING_IN_CPYTHON
    2715             : static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
    2716             : #else
    2717             : #define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
    2718             : #endif
    2719             : 
    2720             : /* CallUnboundCMethod2.proto */
    2721             : static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
    2722             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
    2723             : static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
    2724             : #else
    2725             : #define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
    2726             : #endif
    2727             : 
    2728             : /* ListAppend.proto */
    2729             : #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
    2730         134 : static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    2731         134 :     PyListObject* L = (PyListObject*) list;
    2732         134 :     Py_ssize_t len = Py_SIZE(list);
    2733         134 :     if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
    2734           0 :         Py_INCREF(x);
    2735             :         #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    2736             :         L->ob_item[len] = x;
    2737             :         #else
    2738           0 :         PyList_SET_ITEM(list, len, x);
    2739             :         #endif
    2740           0 :         __Pyx_SET_SIZE(list, len + 1);
    2741           0 :         return 0;
    2742             :     }
    2743         134 :     return PyList_Append(list, x);
    2744             : }
    2745             : #else
    2746             : #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
    2747             : #endif
    2748             : 
    2749             : /* PyObject_GenericGetAttrNoDict.proto */
    2750             : #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
    2751             : static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
    2752             : #else
    2753             : #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
    2754             : #endif
    2755             : 
    2756             : /* PyObject_GenericGetAttr.proto */
    2757             : #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
    2758             : static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
    2759             : #else
    2760             : #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
    2761             : #endif
    2762             : 
    2763             : /* IncludeStructmemberH.proto */
    2764             : #include <structmember.h>
    2765             : 
    2766             : /* FixUpExtensionType.proto */
    2767             : #if CYTHON_USE_TYPE_SPECS
    2768             : static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
    2769             : #endif
    2770             : 
    2771             : /* ValidateBasesTuple.proto */
    2772             : #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
    2773             : static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
    2774             : #endif
    2775             : 
    2776             : /* PyType_Ready.proto */
    2777             : CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);
    2778             : 
    2779             : /* SetVTable.proto */
    2780             : static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);
    2781             : 
    2782             : /* GetVTable.proto */
    2783             : static void* __Pyx_GetVtable(PyTypeObject *type);
    2784             : 
    2785             : /* MergeVTables.proto */
    2786             : #if !CYTHON_COMPILING_IN_LIMITED_API
    2787             : static int __Pyx_MergeVtables(PyTypeObject *type);
    2788             : #endif
    2789             : 
    2790             : /* SetupReduce.proto */
    2791             : #if !CYTHON_COMPILING_IN_LIMITED_API
    2792             : static int __Pyx_setup_reduce(PyObject* type_obj);
    2793             : #endif
    2794             : 
    2795             : /* TypeImport.proto */
    2796             : #ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11
    2797             : #define __PYX_HAVE_RT_ImportType_proto_3_0_11
    2798             : #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
    2799             : #include <stdalign.h>
    2800             : #endif
    2801             : #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
    2802             : #define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s)
    2803             : #else
    2804             : #define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
    2805             : #endif
    2806             : enum __Pyx_ImportType_CheckSize_3_0_11 {
    2807             :    __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
    2808             :    __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
    2809             :    __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
    2810             : };
    2811             : static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
    2812             : #endif
    2813             : 
    2814             : /* FetchSharedCythonModule.proto */
    2815             : static PyObject *__Pyx_FetchSharedCythonABIModule(void);
    2816             : 
    2817             : /* FetchCommonType.proto */
    2818             : #if !CYTHON_USE_TYPE_SPECS
    2819             : static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
    2820             : #else
    2821             : static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
    2822             : #endif
    2823             : 
    2824             : /* PyMethodNew.proto */
    2825             : #if CYTHON_COMPILING_IN_LIMITED_API
    2826             : static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    2827             :     PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
    2828             :     CYTHON_UNUSED_VAR(typ);
    2829             :     if (!self)
    2830             :         return __Pyx_NewRef(func);
    2831             :     typesModule = PyImport_ImportModule("types");
    2832             :     if (!typesModule) return NULL;
    2833             :     methodType = PyObject_GetAttrString(typesModule, "MethodType");
    2834             :     Py_DECREF(typesModule);
    2835             :     if (!methodType) return NULL;
    2836             :     result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
    2837             :     Py_DECREF(methodType);
    2838             :     return result;
    2839             : }
    2840             : #elif PY_MAJOR_VERSION >= 3
    2841           0 : static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    2842           0 :     CYTHON_UNUSED_VAR(typ);
    2843           0 :     if (!self)
    2844           0 :         return __Pyx_NewRef(func);
    2845           0 :     return PyMethod_New(func, self);
    2846             : }
    2847             : #else
    2848             :     #define __Pyx_PyMethod_New PyMethod_New
    2849             : #endif
    2850             : 
    2851             : /* PyVectorcallFastCallDict.proto */
    2852             : #if CYTHON_METH_FASTCALL
    2853             : static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
    2854             : #endif
    2855             : 
    2856             : /* CythonFunctionShared.proto */
    2857             : #define __Pyx_CyFunction_USED
    2858             : #define __Pyx_CYFUNCTION_STATICMETHOD  0x01
    2859             : #define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
    2860             : #define __Pyx_CYFUNCTION_CCLASS        0x04
    2861             : #define __Pyx_CYFUNCTION_COROUTINE     0x08
    2862             : #define __Pyx_CyFunction_GetClosure(f)\
    2863             :     (((__pyx_CyFunctionObject *) (f))->func_closure)
    2864             : #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    2865             :   #define __Pyx_CyFunction_GetClassObj(f)\
    2866             :       (((__pyx_CyFunctionObject *) (f))->func_classobj)
    2867             : #else
    2868             :   #define __Pyx_CyFunction_GetClassObj(f)\
    2869             :       ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
    2870             : #endif
    2871             : #define __Pyx_CyFunction_SetClassObj(f, classobj)\
    2872             :     __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
    2873             : #define __Pyx_CyFunction_Defaults(type, f)\
    2874             :     ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
    2875             : #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    2876             :     ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
    2877             : typedef struct {
    2878             : #if CYTHON_COMPILING_IN_LIMITED_API
    2879             :     PyObject_HEAD
    2880             :     PyObject *func;
    2881             : #elif PY_VERSION_HEX < 0x030900B1
    2882             :     PyCFunctionObject func;
    2883             : #else
    2884             :     PyCMethodObject func;
    2885             : #endif
    2886             : #if CYTHON_BACKPORT_VECTORCALL
    2887             :     __pyx_vectorcallfunc func_vectorcall;
    2888             : #endif
    2889             : #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    2890             :     PyObject *func_weakreflist;
    2891             : #endif
    2892             :     PyObject *func_dict;
    2893             :     PyObject *func_name;
    2894             :     PyObject *func_qualname;
    2895             :     PyObject *func_doc;
    2896             :     PyObject *func_globals;
    2897             :     PyObject *func_code;
    2898             :     PyObject *func_closure;
    2899             : #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    2900             :     PyObject *func_classobj;
    2901             : #endif
    2902             :     void *defaults;
    2903             :     int defaults_pyobjects;
    2904             :     size_t defaults_size;
    2905             :     int flags;
    2906             :     PyObject *defaults_tuple;
    2907             :     PyObject *defaults_kwdict;
    2908             :     PyObject *(*defaults_getter)(PyObject *);
    2909             :     PyObject *func_annotations;
    2910             :     PyObject *func_is_coroutine;
    2911             : } __pyx_CyFunctionObject;
    2912             : #undef __Pyx_CyOrPyCFunction_Check
    2913             : #define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
    2914             : #define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
    2915             : #define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
    2916             : static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
    2917             : #undef __Pyx_IsSameCFunction
    2918             : #define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
    2919             : static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
    2920             :                                       int flags, PyObject* qualname,
    2921             :                                       PyObject *closure,
    2922             :                                       PyObject *module, PyObject *globals,
    2923             :                                       PyObject* code);
    2924             : static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
    2925             : static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
    2926             :                                                          size_t size,
    2927             :                                                          int pyobjects);
    2928             : static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
    2929             :                                                             PyObject *tuple);
    2930             : static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
    2931             :                                                              PyObject *dict);
    2932             : static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
    2933             :                                                               PyObject *dict);
    2934             : static int __pyx_CyFunction_init(PyObject *module);
    2935             : #if CYTHON_METH_FASTCALL
    2936             : static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
    2937             : static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
    2938             : static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
    2939             : static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
    2940             : #if CYTHON_BACKPORT_VECTORCALL
    2941             : #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
    2942             : #else
    2943             : #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
    2944             : #endif
    2945             : #endif
    2946             : 
    2947             : /* CythonFunction.proto */
    2948             : static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
    2949             :                                       int flags, PyObject* qualname,
    2950             :                                       PyObject *closure,
    2951             :                                       PyObject *module, PyObject *globals,
    2952             :                                       PyObject* code);
    2953             : 
    2954             : /* FusedFunction.proto */
    2955             : typedef struct {
    2956             :     __pyx_CyFunctionObject func;
    2957             :     PyObject *__signatures__;
    2958             :     PyObject *self;
    2959             : } __pyx_FusedFunctionObject;
    2960             : static PyObject *__pyx_FusedFunction_New(PyMethodDef *ml, int flags,
    2961             :                                          PyObject *qualname, PyObject *closure,
    2962             :                                          PyObject *module, PyObject *globals,
    2963             :                                          PyObject *code);
    2964             : static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self);
    2965             : static int __pyx_FusedFunction_init(PyObject *module);
    2966             : #define __Pyx_FusedFunction_USED
    2967             : 
    2968             : /* CLineInTraceback.proto */
    2969             : #ifdef CYTHON_CLINE_IN_TRACEBACK
    2970             : #define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
    2971             : #else
    2972             : static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
    2973             : #endif
    2974             : 
    2975             : /* CodeObjectCache.proto */
    2976             : #if !CYTHON_COMPILING_IN_LIMITED_API
    2977             : typedef struct {
    2978             :     PyCodeObject* code_object;
    2979             :     int code_line;
    2980             : } __Pyx_CodeObjectCacheEntry;
    2981             : struct __Pyx_CodeObjectCache {
    2982             :     int count;
    2983             :     int max_count;
    2984             :     __Pyx_CodeObjectCacheEntry* entries;
    2985             : };
    2986             : static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
    2987             : static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
    2988             : static PyCodeObject *__pyx_find_code_object(int code_line);
    2989             : static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
    2990             : #endif
    2991             : 
    2992             : /* AddTraceback.proto */
    2993             : static void __Pyx_AddTraceback(const char *funcname, int c_line,
    2994             :                                int py_line, const char *filename);
    2995             : 
    2996             : /* RealImag.proto */
    2997             : #if CYTHON_CCOMPLEX
    2998             :   #ifdef __cplusplus
    2999             :     #define __Pyx_CREAL(z) ((z).real())
    3000             :     #define __Pyx_CIMAG(z) ((z).imag())
    3001             :   #else
    3002             :     #define __Pyx_CREAL(z) (__real__(z))
    3003             :     #define __Pyx_CIMAG(z) (__imag__(z))
    3004             :   #endif
    3005             : #else
    3006             :     #define __Pyx_CREAL(z) ((z).real)
    3007             :     #define __Pyx_CIMAG(z) ((z).imag)
    3008             : #endif
    3009             : #if defined(__cplusplus) && CYTHON_CCOMPLEX\
    3010             :         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
    3011             :     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
    3012             :     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
    3013             : #else
    3014             :     #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
    3015             :     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
    3016             : #endif
    3017             : 
    3018             : /* Arithmetic.proto */
    3019             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    3020             :     #define __Pyx_c_eq_float(a, b)   ((a)==(b))
    3021             :     #define __Pyx_c_sum_float(a, b)  ((a)+(b))
    3022             :     #define __Pyx_c_diff_float(a, b) ((a)-(b))
    3023             :     #define __Pyx_c_prod_float(a, b) ((a)*(b))
    3024             :     #define __Pyx_c_quot_float(a, b) ((a)/(b))
    3025             :     #define __Pyx_c_neg_float(a)     (-(a))
    3026             :   #ifdef __cplusplus
    3027             :     #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
    3028             :     #define __Pyx_c_conj_float(z)    (::std::conj(z))
    3029             :     #if 1
    3030             :         #define __Pyx_c_abs_float(z)     (::std::abs(z))
    3031             :         #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
    3032             :     #endif
    3033             :   #else
    3034             :     #define __Pyx_c_is_zero_float(z) ((z)==0)
    3035             :     #define __Pyx_c_conj_float(z)    (conjf(z))
    3036             :     #if 1
    3037             :         #define __Pyx_c_abs_float(z)     (cabsf(z))
    3038             :         #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
    3039             :     #endif
    3040             :  #endif
    3041             : #else
    3042             :     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3043             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3044             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3045             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3046             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3047             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
    3048             :     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
    3049             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
    3050             :     #if 1
    3051             :         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
    3052             :         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
    3053             :     #endif
    3054             : #endif
    3055             : 
    3056             : /* Arithmetic.proto */
    3057             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    3058             :     #define __Pyx_c_eq_double(a, b)   ((a)==(b))
    3059             :     #define __Pyx_c_sum_double(a, b)  ((a)+(b))
    3060             :     #define __Pyx_c_diff_double(a, b) ((a)-(b))
    3061             :     #define __Pyx_c_prod_double(a, b) ((a)*(b))
    3062             :     #define __Pyx_c_quot_double(a, b) ((a)/(b))
    3063             :     #define __Pyx_c_neg_double(a)     (-(a))
    3064             :   #ifdef __cplusplus
    3065             :     #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
    3066             :     #define __Pyx_c_conj_double(z)    (::std::conj(z))
    3067             :     #if 1
    3068             :         #define __Pyx_c_abs_double(z)     (::std::abs(z))
    3069             :         #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
    3070             :     #endif
    3071             :   #else
    3072             :     #define __Pyx_c_is_zero_double(z) ((z)==0)
    3073             :     #define __Pyx_c_conj_double(z)    (conj(z))
    3074             :     #if 1
    3075             :         #define __Pyx_c_abs_double(z)     (cabs(z))
    3076             :         #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
    3077             :     #endif
    3078             :  #endif
    3079             : #else
    3080             :     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3081             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3082             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3083             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3084             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3085             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
    3086             :     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
    3087             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
    3088             :     #if 1
    3089             :         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
    3090             :         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
    3091             :     #endif
    3092             : #endif
    3093             : 
    3094             : /* Arithmetic.proto */
    3095             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    3096             :     #define __Pyx_c_eq_long__double(a, b)   ((a)==(b))
    3097             :     #define __Pyx_c_sum_long__double(a, b)  ((a)+(b))
    3098             :     #define __Pyx_c_diff_long__double(a, b) ((a)-(b))
    3099             :     #define __Pyx_c_prod_long__double(a, b) ((a)*(b))
    3100             :     #define __Pyx_c_quot_long__double(a, b) ((a)/(b))
    3101             :     #define __Pyx_c_neg_long__double(a)     (-(a))
    3102             :   #ifdef __cplusplus
    3103             :     #define __Pyx_c_is_zero_long__double(z) ((z)==(long double)0)
    3104             :     #define __Pyx_c_conj_long__double(z)    (::std::conj(z))
    3105             :     #if 1
    3106             :         #define __Pyx_c_abs_long__double(z)     (::std::abs(z))
    3107             :         #define __Pyx_c_pow_long__double(a, b)  (::std::pow(a, b))
    3108             :     #endif
    3109             :   #else
    3110             :     #define __Pyx_c_is_zero_long__double(z) ((z)==0)
    3111             :     #define __Pyx_c_conj_long__double(z)    (conjl(z))
    3112             :     #if 1
    3113             :         #define __Pyx_c_abs_long__double(z)     (cabsl(z))
    3114             :         #define __Pyx_c_pow_long__double(a, b)  (cpowl(a, b))
    3115             :     #endif
    3116             :  #endif
    3117             : #else
    3118             :     static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3119             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3120             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3121             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3122             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3123             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex);
    3124             :     static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex);
    3125             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex);
    3126             :     #if 1
    3127             :         static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex);
    3128             :         static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    3129             :     #endif
    3130             : #endif
    3131             : 
    3132             : #if PY_MAJOR_VERSION < 3
    3133             :     static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
    3134             :     static void __Pyx_ReleaseBuffer(Py_buffer *view);
    3135             : #else
    3136             :     #define __Pyx_GetBuffer PyObject_GetBuffer
    3137             :     #define __Pyx_ReleaseBuffer PyBuffer_Release
    3138             : #endif
    3139             : 
    3140             : 
    3141             : /* BufferStructDeclare.proto */
    3142             : typedef struct {
    3143             :   Py_ssize_t shape, strides, suboffsets;
    3144             : } __Pyx_Buf_DimInfo;
    3145             : typedef struct {
    3146             :   size_t refcount;
    3147             :   Py_buffer pybuffer;
    3148             : } __Pyx_Buffer;
    3149             : typedef struct {
    3150             :   __Pyx_Buffer *rcbuffer;
    3151             :   char *data;
    3152             :   __Pyx_Buf_DimInfo diminfo[8];
    3153             : } __Pyx_LocalBuf_ND;
    3154             : 
    3155             : /* MemviewSliceIsContig.proto */
    3156             : static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim);
    3157             : 
    3158             : /* OverlappingSlices.proto */
    3159             : static int __pyx_slices_overlap(__Pyx_memviewslice *slice1,
    3160             :                                 __Pyx_memviewslice *slice2,
    3161             :                                 int ndim, size_t itemsize);
    3162             : 
    3163             : /* IsLittleEndian.proto */
    3164             : static CYTHON_INLINE int __Pyx_Is_Little_Endian(void);
    3165             : 
    3166             : /* BufferFormatCheck.proto */
    3167             : static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts);
    3168             : static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
    3169             :                               __Pyx_BufFmt_StackElem* stack,
    3170             :                               __Pyx_TypeInfo* type);
    3171             : 
    3172             : /* TypeInfoCompare.proto */
    3173             : static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b);
    3174             : 
    3175             : /* MemviewSliceValidateAndInit.proto */
    3176             : static int __Pyx_ValidateAndInit_memviewslice(
    3177             :                 int *axes_specs,
    3178             :                 int c_or_f_flag,
    3179             :                 int buf_flags,
    3180             :                 int ndim,
    3181             :                 __Pyx_TypeInfo *dtype,
    3182             :                 __Pyx_BufFmt_StackElem stack[],
    3183             :                 __Pyx_memviewslice *memviewslice,
    3184             :                 PyObject *original_obj);
    3185             : 
    3186             : /* ObjectToMemviewSlice.proto */
    3187             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *, int writable_flag);
    3188             : 
    3189             : /* ObjectToMemviewSlice.proto */
    3190             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_float_complex(PyObject *, int writable_flag);
    3191             : 
    3192             : /* ObjectToMemviewSlice.proto */
    3193             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(PyObject *, int writable_flag);
    3194             : 
    3195             : /* ObjectToMemviewSlice.proto */
    3196             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_double_complex(PyObject *, int writable_flag);
    3197             : 
    3198             : /* ObjectToMemviewSlice.proto */
    3199             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_long__double(PyObject *, int writable_flag);
    3200             : 
    3201             : /* ObjectToMemviewSlice.proto */
    3202             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_long_double_complex(PyObject *, int writable_flag);
    3203             : 
    3204             : /* ObjectToMemviewSlice.proto */
    3205             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(PyObject *, int writable_flag);
    3206             : 
    3207             : /* ObjectToMemviewSlice.proto */
    3208             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_object(PyObject *, int writable_flag);
    3209             : 
    3210             : /* ObjectToMemviewSlice.proto */
    3211             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_float(PyObject *, int writable_flag);
    3212             : 
    3213             : /* ObjectToMemviewSlice.proto */
    3214             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_float_complex(PyObject *, int writable_flag);
    3215             : 
    3216             : /* ObjectToMemviewSlice.proto */
    3217             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_double(PyObject *, int writable_flag);
    3218             : 
    3219             : /* ObjectToMemviewSlice.proto */
    3220             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_double_complex(PyObject *, int writable_flag);
    3221             : 
    3222             : /* ObjectToMemviewSlice.proto */
    3223             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_long__double(PyObject *, int writable_flag);
    3224             : 
    3225             : /* ObjectToMemviewSlice.proto */
    3226             : static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_long_double_complex(PyObject *, int writable_flag);
    3227             : 
    3228             : /* PyUCS4InUnicode.proto */
    3229             : static CYTHON_INLINE int __Pyx_UnicodeContainsUCS4(PyObject* unicode, Py_UCS4 character);
    3230             : 
    3231             : /* MemviewObjectToObject.proto */
    3232             : static PyObject *__pyx_memview_get_object(const char *itemp);
    3233             : static int __pyx_memview_set_object(const char *itemp, PyObject *obj);
    3234             : 
    3235             : /* MemviewSliceCopyTemplate.proto */
    3236             : static __Pyx_memviewslice
    3237             : __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
    3238             :                                  const char *mode, int ndim,
    3239             :                                  size_t sizeof_dtype, int contig_flag,
    3240             :                                  int dtype_is_object);
    3241             : 
    3242             : /* MemviewSliceInit.proto */
    3243             : #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
    3244             : #define __Pyx_MEMVIEW_DIRECT   1
    3245             : #define __Pyx_MEMVIEW_PTR      2
    3246             : #define __Pyx_MEMVIEW_FULL     4
    3247             : #define __Pyx_MEMVIEW_CONTIG   8
    3248             : #define __Pyx_MEMVIEW_STRIDED  16
    3249             : #define __Pyx_MEMVIEW_FOLLOW   32
    3250             : #define __Pyx_IS_C_CONTIG 1
    3251             : #define __Pyx_IS_F_CONTIG 2
    3252             : static int __Pyx_init_memviewslice(
    3253             :                 struct __pyx_memoryview_obj *memview,
    3254             :                 int ndim,
    3255             :                 __Pyx_memviewslice *memviewslice,
    3256             :                 int memview_is_new_reference);
    3257             : static CYTHON_INLINE int __pyx_add_acquisition_count_locked(
    3258             :     __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock);
    3259             : static CYTHON_INLINE int __pyx_sub_acquisition_count_locked(
    3260             :     __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock);
    3261             : #define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count)
    3262             : #define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__)
    3263             : #define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__)
    3264             : static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int);
    3265             : static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int);
    3266             : 
    3267             : /* CIntToPy.proto */
    3268             : static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
    3269             : 
    3270             : /* ImportNumPyArray.proto */
    3271             : static PyObject *__pyx_numpy_ndarray = NULL;
    3272             : static PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void);
    3273             : 
    3274             : /* CIntFromPy.proto */
    3275             : static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
    3276             : 
    3277             : /* CIntFromPy.proto */
    3278             : static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
    3279             : 
    3280             : /* CIntToPy.proto */
    3281             : static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
    3282             : 
    3283             : /* CIntFromPy.proto */
    3284             : static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
    3285             : 
    3286             : /* FormatTypeName.proto */
    3287             : #if CYTHON_COMPILING_IN_LIMITED_API
    3288             : typedef PyObject *__Pyx_TypeName;
    3289             : #define __Pyx_FMT_TYPENAME "%U"
    3290             : static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
    3291             : #define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
    3292             : #else
    3293             : typedef const char *__Pyx_TypeName;
    3294             : #define __Pyx_FMT_TYPENAME "%.200s"
    3295             : #define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
    3296             : #define __Pyx_DECREF_TypeName(obj)
    3297             : #endif
    3298             : 
    3299             : /* CheckBinaryVersion.proto */
    3300             : static unsigned long __Pyx_get_runtime_version(void);
    3301             : static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);
    3302             : 
    3303             : /* InitStrings.proto */
    3304             : static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
    3305             : 
    3306             : /* #### Code section: module_declarations ### */
    3307             : static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/
    3308             : static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/
    3309             : static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/
    3310             : static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/
    3311             : static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/
    3312             : static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/
    3313             : static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
    3314             : static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/
    3315             : static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v_self); /* proto*/
    3316             : static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
    3317             : static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/
    3318             : static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto*/
    3319             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self); /* proto*/
    3320             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self); /* proto*/
    3321             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Descr *__pyx_v_self); /* proto*/
    3322             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr *__pyx_v_self); /* proto*/
    3323             : static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self); /* proto*/
    3324             : static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self); /* proto*/
    3325             : static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3326             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3327             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3328             : static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3329             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3330             : static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
    3331             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self); /* proto*/
    3332             : static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self); /* proto*/
    3333             : static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self); /* proto*/
    3334             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self); /* proto*/
    3335             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self); /* proto*/
    3336             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self); /* proto*/
    3337             : static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self); /* proto*/
    3338             : 
    3339             : /* Module declarations from "libc.string" */
    3340             : 
    3341             : /* Module declarations from "libc.stdio" */
    3342             : 
    3343             : /* Module declarations from "__builtin__" */
    3344             : 
    3345             : /* Module declarations from "cpython.type" */
    3346             : 
    3347             : /* Module declarations from "cpython" */
    3348             : 
    3349             : /* Module declarations from "cpython.object" */
    3350             : 
    3351             : /* Module declarations from "cpython.ref" */
    3352             : 
    3353             : /* Module declarations from "numpy" */
    3354             : 
    3355             : /* Module declarations from "numpy" */
    3356             : static CYTHON_INLINE int __pyx_f_5numpy_import_array(void); /*proto*/
    3357             : 
    3358             : /* Module declarations from "cython.view" */
    3359             : 
    3360             : /* Module declarations from "cython.dataclasses" */
    3361             : 
    3362             : /* Module declarations from "cython" */
    3363             : 
    3364             : /* Module declarations from "scipy.signal._sosfilt" */
    3365             : static PyObject *__pyx_collections_abc_Sequence = 0;
    3366             : static PyObject *generic = 0;
    3367             : static PyObject *strided = 0;
    3368             : static PyObject *indirect = 0;
    3369             : static PyObject *contiguous = 0;
    3370             : static PyObject *indirect_contiguous = 0;
    3371             : static int __pyx_memoryview_thread_locks_used;
    3372             : static PyThread_type_lock __pyx_memoryview_thread_locks[8];
    3373             : static void __pyx_fuse_0__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3374             : static void __pyx_fuse_1__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3375             : static void __pyx_fuse_2__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3376             : static void __pyx_fuse_3__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3377             : static void __pyx_fuse_4__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3378             : static void __pyx_fuse_5__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /*proto*/
    3379             : static int __pyx_array_allocate_buffer(struct __pyx_array_obj *); /*proto*/
    3380             : static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/
    3381             : static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/
    3382             : static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/
    3383             : static PyObject *_unellipsify(PyObject *, int); /*proto*/
    3384             : static int assert_direct_dimensions(Py_ssize_t *, int); /*proto*/
    3385             : static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/
    3386             : static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/
    3387             : static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/
    3388             : static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/
    3389             : static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/
    3390             : static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
    3391             : static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
    3392             : static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/
    3393             : static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
    3394             : static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/
    3395             : static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/
    3396             : static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/
    3397             : static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/
    3398             : static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/
    3399             : static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/
    3400             : static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/
    3401             : static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/
    3402             : static int __pyx_memoryview_err_dim(PyObject *, PyObject *, int); /*proto*/
    3403             : static int __pyx_memoryview_err(PyObject *, PyObject *); /*proto*/
    3404             : static int __pyx_memoryview_err_no_memory(void); /*proto*/
    3405             : static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/
    3406             : static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/
    3407             : static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/
    3408             : static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
    3409             : static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
    3410             : static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/
    3411             : static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/
    3412             : static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/
    3413             : /* #### Code section: typeinfo ### */
    3414             : static __Pyx_TypeInfo __Pyx_TypeInfo_float = { "float", NULL, sizeof(float), { 0 }, 0, 'R', 0, 0 };
    3415             : static __Pyx_TypeInfo __Pyx_TypeInfo___pyx_t_float_complex = { "float complex", NULL, sizeof(__pyx_t_float_complex), { 0 }, 0, 'C', 0, 0 };
    3416             : static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 };
    3417             : static __Pyx_TypeInfo __Pyx_TypeInfo___pyx_t_double_complex = { "double complex", NULL, sizeof(__pyx_t_double_complex), { 0 }, 0, 'C', 0, 0 };
    3418             : static __Pyx_TypeInfo __Pyx_TypeInfo_long__double = { "long double", NULL, sizeof(long double), { 0 }, 0, 'R', 0, 0 };
    3419             : static __Pyx_TypeInfo __Pyx_TypeInfo___pyx_t_long_double_complex = { "long double complex", NULL, sizeof(__pyx_t_long_double_complex), { 0 }, 0, 'C', 0, 0 };
    3420             : static __Pyx_TypeInfo __Pyx_TypeInfo_object = { "Python object", NULL, sizeof(PyObject *), { 0 }, 0, 'O', 0, 0 };
    3421             : /* #### Code section: before_global_var ### */
    3422             : #define __Pyx_MODULE_NAME "scipy.signal._sosfilt"
    3423             : extern int __pyx_module_is_main_scipy__signal___sosfilt;
    3424             : int __pyx_module_is_main_scipy__signal___sosfilt = 0;
    3425             : 
    3426             : /* Implementation of "scipy.signal._sosfilt" */
    3427             : /* #### Code section: global_var ### */
    3428             : static PyObject *__pyx_builtin_xrange;
    3429             : static PyObject *__pyx_builtin_TypeError;
    3430             : static PyObject *__pyx_builtin_ValueError;
    3431             : static PyObject *__pyx_builtin___import__;
    3432             : static PyObject *__pyx_builtin_MemoryError;
    3433             : static PyObject *__pyx_builtin_enumerate;
    3434             : static PyObject *__pyx_builtin_range;
    3435             : static PyObject *__pyx_builtin_AssertionError;
    3436             : static PyObject *__pyx_builtin_Ellipsis;
    3437             : static PyObject *__pyx_builtin_id;
    3438             : static PyObject *__pyx_builtin_IndexError;
    3439             : static PyObject *__pyx_builtin_ImportError;
    3440             : /* #### Code section: string_decls ### */
    3441             : static const char __pyx_k_[] = ": ";
    3442             : static const char __pyx_k_O[] = "O";
    3443             : static const char __pyx_k_c[] = "c";
    3444             : static const char __pyx_k_i[] = "i";
    3445             : static const char __pyx_k_n[] = "n";
    3446             : static const char __pyx_k_s[] = "s";
    3447             : static const char __pyx_k_x[] = "x";
    3448             : static const char __pyx_k__2[] = ".";
    3449             : static const char __pyx_k__3[] = "*";
    3450             : static const char __pyx_k__6[] = "'";
    3451             : static const char __pyx_k__7[] = ")";
    3452             : static const char __pyx_k_gc[] = "gc";
    3453             : static const char __pyx_k_id[] = "id";
    3454             : static const char __pyx_k_zi[] = "zi";
    3455             : static const char __pyx_k__11[] = "()";
    3456             : static const char __pyx_k__12[] = "|";
    3457             : static const char __pyx_k__30[] = "?";
    3458             : static const char __pyx_k_abc[] = "abc";
    3459             : static const char __pyx_k_and[] = " and ";
    3460             : static const char __pyx_k_get[] = "get";
    3461             : static const char __pyx_k_got[] = " (got ";
    3462             : static const char __pyx_k_new[] = "__new__";
    3463             : static const char __pyx_k_obj[] = "obj";
    3464             : static const char __pyx_k_sos[] = "sos";
    3465             : static const char __pyx_k_sys[] = "sys";
    3466             : static const char __pyx_k_x_n[] = "x_n";
    3467             : static const char __pyx_k_args[] = "args";
    3468             : static const char __pyx_k_base[] = "base";
    3469             : static const char __pyx_k_dict[] = "__dict__";
    3470             : static const char __pyx_k_kind[] = "kind";
    3471             : static const char __pyx_k_main[] = "__main__";
    3472             : static const char __pyx_k_mode[] = "mode";
    3473             : static const char __pyx_k_name[] = "name";
    3474             : static const char __pyx_k_ndim[] = "ndim";
    3475             : static const char __pyx_k_pack[] = "pack";
    3476             : static const char __pyx_k_size[] = "size";
    3477             : static const char __pyx_k_spec[] = "__spec__";
    3478             : static const char __pyx_k_step[] = "step";
    3479             : static const char __pyx_k_stop[] = "stop";
    3480             : static const char __pyx_k_test[] = "__test__";
    3481             : static const char __pyx_k_ASCII[] = "ASCII";
    3482             : static const char __pyx_k_class[] = "__class__";
    3483             : static const char __pyx_k_count[] = "count";
    3484             : static const char __pyx_k_dtype[] = "dtype";
    3485             : static const char __pyx_k_error[] = "error";
    3486             : static const char __pyx_k_flags[] = "flags";
    3487             : static const char __pyx_k_float[] = "float";
    3488             : static const char __pyx_k_index[] = "index";
    3489             : static const char __pyx_k_numpy[] = "numpy";
    3490             : static const char __pyx_k_range[] = "range";
    3491             : static const char __pyx_k_shape[] = "shape";
    3492             : static const char __pyx_k_split[] = "split";
    3493             : static const char __pyx_k_start[] = "start";
    3494             : static const char __pyx_k_strip[] = "strip";
    3495             : static const char __pyx_k_double[] = "double";
    3496             : static const char __pyx_k_enable[] = "enable";
    3497             : static const char __pyx_k_encode[] = "encode";
    3498             : static const char __pyx_k_format[] = "format";
    3499             : static const char __pyx_k_import[] = "__import__";
    3500             : static const char __pyx_k_kwargs[] = "kwargs";
    3501             : static const char __pyx_k_name_2[] = "__name__";
    3502             : static const char __pyx_k_object[] = "object";
    3503             : static const char __pyx_k_pickle[] = "pickle";
    3504             : static const char __pyx_k_reduce[] = "__reduce__";
    3505             : static const char __pyx_k_struct[] = "struct";
    3506             : static const char __pyx_k_unpack[] = "unpack";
    3507             : static const char __pyx_k_update[] = "update";
    3508             : static const char __pyx_k_values[] = "values";
    3509             : static const char __pyx_k_xrange[] = "xrange";
    3510             : static const char __pyx_k_disable[] = "disable";
    3511             : static const char __pyx_k_fortran[] = "fortran";
    3512             : static const char __pyx_k_memview[] = "memview";
    3513             : static const char __pyx_k_sosfilt[] = "_sosfilt";
    3514             : static const char __pyx_k_Ellipsis[] = "Ellipsis";
    3515             : static const char __pyx_k_Sequence[] = "Sequence";
    3516             : static const char __pyx_k_defaults[] = "defaults";
    3517             : static const char __pyx_k_getstate[] = "__getstate__";
    3518             : static const char __pyx_k_itemsize[] = "itemsize";
    3519             : static const char __pyx_k_pyx_type[] = "__pyx_type";
    3520             : static const char __pyx_k_register[] = "register";
    3521             : static const char __pyx_k_setstate[] = "__setstate__";
    3522             : static const char __pyx_k_TypeError[] = "TypeError";
    3523             : static const char __pyx_k_enumerate[] = "enumerate";
    3524             : static const char __pyx_k_isenabled[] = "isenabled";
    3525             : static const char __pyx_k_n_samples[] = "n_samples";
    3526             : static const char __pyx_k_n_signals[] = "n_signals";
    3527             : static const char __pyx_k_pyx_state[] = "__pyx_state";
    3528             : static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
    3529             : static const char __pyx_k_IndexError[] = "IndexError";
    3530             : static const char __pyx_k_ValueError[] = "ValueError";
    3531             : static const char __pyx_k_n_sections[] = "n_sections";
    3532             : static const char __pyx_k_pyx_result[] = "__pyx_result";
    3533             : static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
    3534             : static const char __pyx_k_signatures[] = "signatures";
    3535             : static const char __pyx_k_ImportError[] = "ImportError";
    3536             : static const char __pyx_k_MemoryError[] = "MemoryError";
    3537             : static const char __pyx_k_PickleError[] = "PickleError";
    3538             : static const char __pyx_k_collections[] = "collections";
    3539             : static const char __pyx_k_long_double[] = "long double";
    3540             : static const char __pyx_k_initializing[] = "_initializing";
    3541             : static const char __pyx_k_is_coroutine[] = "_is_coroutine";
    3542             : static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
    3543             : static const char __pyx_k_stringsource[] = "<stringsource>";
    3544             : static const char __pyx_k_version_info[] = "version_info";
    3545             : static const char __pyx_k_class_getitem[] = "__class_getitem__";
    3546             : static const char __pyx_k_float_complex[] = "float complex";
    3547             : static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
    3548             : static const char __pyx_k_AssertionError[] = "AssertionError";
    3549             : static const char __pyx_k_double_complex[] = "double complex";
    3550             : static const char __pyx_k_fused_sigindex[] = "_fused_sigindex";
    3551             : static const char __pyx_k_sosfilt_object[] = "_sosfilt_object";
    3552             : static const char __pyx_k_View_MemoryView[] = "View.MemoryView";
    3553             : static const char __pyx_k_allocate_buffer[] = "allocate_buffer";
    3554             : static const char __pyx_k_collections_abc[] = "collections.abc";
    3555             : static const char __pyx_k_dtype_is_object[] = "dtype_is_object";
    3556             : static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
    3557             : static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
    3558             : static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum";
    3559             : static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
    3560             : static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
    3561             : static const char __pyx_k_strided_and_direct[] = "<strided and direct>";
    3562             : static const char __pyx_k_long_double_complex[] = "long double complex";
    3563             : static const char __pyx_k_strided_and_indirect[] = "<strided and indirect>";
    3564             : static const char __pyx_k_Invalid_shape_in_axis[] = "Invalid shape in axis ";
    3565             : static const char __pyx_k_contiguous_and_direct[] = "<contiguous and direct>";
    3566             : static const char __pyx_k_scipy_signal__sosfilt[] = "scipy.signal._sosfilt";
    3567             : static const char __pyx_k_Cannot_index_with_type[] = "Cannot index with type '";
    3568             : static const char __pyx_k_MemoryView_of_r_object[] = "<MemoryView of %r object>";
    3569             : static const char __pyx_k_MemoryView_of_r_at_0x_x[] = "<MemoryView of %r at 0x%x>";
    3570             : static const char __pyx_k_contiguous_and_indirect[] = "<contiguous and indirect>";
    3571             : static const char __pyx_k_Dimension_d_is_not_direct[] = "Dimension %d is not direct";
    3572             : static const char __pyx_k_Index_out_of_bounds_axis_d[] = "Index out of bounds (axis %d)";
    3573             : static const char __pyx_k_No_matching_signature_found[] = "No matching signature found";
    3574             : static const char __pyx_k_Step_may_not_be_zero_axis_d[] = "Step may not be zero (axis %d)";
    3575             : static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array";
    3576             : static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data.";
    3577             : static const char __pyx_k_strided_and_direct_or_indirect[] = "<strided and direct or indirect>";
    3578             : static const char __pyx_k_home_czgdp18079_Quansight_scipy[] = "/home/czgdp18079/Quansight/scipy/scipy/signal/_sosfilt.pyx";
    3579             : static const char __pyx_k_All_dimensions_preceding_dimensi[] = "All dimensions preceding dimension %d must be indexed and not sliced";
    3580             : static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides";
    3581             : static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory.";
    3582             : static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to read-only memoryview";
    3583             : static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview";
    3584             : static const char __pyx_k_Cannot_transpose_memoryview_with[] = "Cannot transpose memoryview with indirect dimensions";
    3585             : static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array";
    3586             : static const char __pyx_k_Expected_at_least_d_argument_s_g[] = "Expected at least %d argument%s, got %d";
    3587             : static const char __pyx_k_Function_call_with_ambiguous_arg[] = "Function call with ambiguous argument types";
    3588             : static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))";
    3589             : static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported";
    3590             : static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got ";
    3591             : static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis ";
    3592             : static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object";
    3593             : static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension ";
    3594             : static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
    3595             : static const char __pyx_k_numpy__core_multiarray_failed_to[] = "numpy._core.multiarray failed to import";
    3596             : static const char __pyx_k_numpy__core_umath_failed_to_impo[] = "numpy._core.umath failed to import";
    3597             : static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides.";
    3598             : /* #### Code section: decls ### */
    3599             : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */
    3600             : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
    3601             : static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */
    3602             : static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */
    3603             : static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */
    3604             : static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */
    3605             : static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
    3606             : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */
    3607             : static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */
    3608             : static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
    3609             : static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
    3610             : static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
    3611             : static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
    3612             : static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
    3613             : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */
    3614             : static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3615             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
    3616             : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
    3617             : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
    3618             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3619             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3620             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3621             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3622             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3623             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3624             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3625             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3626             : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3627             : static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3628             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3629             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3630             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3631             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3632             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3633             : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3634             : static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
    3635             : static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
    3636             : static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
    3637             : static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
    3638             : static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
    3639             : static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
    3640             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt__sosfilt_object(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3641             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_2_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, PyObject *__pyx_v__fused_sigindex); /* proto */
    3642             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_4_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3643             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_6_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3644             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_8_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3645             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_10_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3646             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_12_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3647             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_14_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3648             : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_16_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi); /* proto */
    3649             : static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
    3650             : static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
    3651             : static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
    3652             : static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
    3653             : static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, 0, 0, 0, 0};
    3654             : static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, 0, 0, 0, 0};
    3655             : /* #### Code section: late_includes ### */
    3656             : /* #### Code section: module_state ### */
    3657             : typedef struct {
    3658             :   PyObject *__pyx_d;
    3659             :   PyObject *__pyx_b;
    3660             :   PyObject *__pyx_cython_runtime;
    3661             :   PyObject *__pyx_empty_tuple;
    3662             :   PyObject *__pyx_empty_bytes;
    3663             :   PyObject *__pyx_empty_unicode;
    3664             :   #ifdef __Pyx_CyFunction_USED
    3665             :   PyTypeObject *__pyx_CyFunctionType;
    3666             :   #endif
    3667             :   #ifdef __Pyx_FusedFunction_USED
    3668             :   PyTypeObject *__pyx_FusedFunctionType;
    3669             :   #endif
    3670             :   #ifdef __Pyx_Generator_USED
    3671             :   PyTypeObject *__pyx_GeneratorType;
    3672             :   #endif
    3673             :   #ifdef __Pyx_IterableCoroutine_USED
    3674             :   PyTypeObject *__pyx_IterableCoroutineType;
    3675             :   #endif
    3676             :   #ifdef __Pyx_Coroutine_USED
    3677             :   PyTypeObject *__pyx_CoroutineAwaitType;
    3678             :   #endif
    3679             :   #ifdef __Pyx_Coroutine_USED
    3680             :   PyTypeObject *__pyx_CoroutineType;
    3681             :   #endif
    3682             :   #if CYTHON_USE_MODULE_STATE
    3683             :   #endif
    3684             :   #if CYTHON_USE_MODULE_STATE
    3685             :   #endif
    3686             :   #if CYTHON_USE_MODULE_STATE
    3687             :   #endif
    3688             :   #if CYTHON_USE_MODULE_STATE
    3689             :   #endif
    3690             :   PyTypeObject *__pyx_ptype_7cpython_4type_type;
    3691             :   #if CYTHON_USE_MODULE_STATE
    3692             :   #endif
    3693             :   #if CYTHON_USE_MODULE_STATE
    3694             :   #endif
    3695             :   #if CYTHON_USE_MODULE_STATE
    3696             :   #endif
    3697             :   #if CYTHON_USE_MODULE_STATE
    3698             :   #endif
    3699             :   #if CYTHON_USE_MODULE_STATE
    3700             :   #endif
    3701             :   PyTypeObject *__pyx_ptype_5numpy_dtype;
    3702             :   PyTypeObject *__pyx_ptype_5numpy_flatiter;
    3703             :   PyTypeObject *__pyx_ptype_5numpy_broadcast;
    3704             :   PyTypeObject *__pyx_ptype_5numpy_ndarray;
    3705             :   PyTypeObject *__pyx_ptype_5numpy_generic;
    3706             :   PyTypeObject *__pyx_ptype_5numpy_number;
    3707             :   PyTypeObject *__pyx_ptype_5numpy_integer;
    3708             :   PyTypeObject *__pyx_ptype_5numpy_signedinteger;
    3709             :   PyTypeObject *__pyx_ptype_5numpy_unsignedinteger;
    3710             :   PyTypeObject *__pyx_ptype_5numpy_inexact;
    3711             :   PyTypeObject *__pyx_ptype_5numpy_floating;
    3712             :   PyTypeObject *__pyx_ptype_5numpy_complexfloating;
    3713             :   PyTypeObject *__pyx_ptype_5numpy_flexible;
    3714             :   PyTypeObject *__pyx_ptype_5numpy_character;
    3715             :   PyTypeObject *__pyx_ptype_5numpy_ufunc;
    3716             :   #if CYTHON_USE_MODULE_STATE
    3717             :   #endif
    3718             :   #if CYTHON_USE_MODULE_STATE
    3719             :   #endif
    3720             :   #if CYTHON_USE_MODULE_STATE
    3721             :   #endif
    3722             :   #if CYTHON_USE_MODULE_STATE
    3723             :   PyObject *__pyx_type___pyx_array;
    3724             :   PyObject *__pyx_type___pyx_MemviewEnum;
    3725             :   PyObject *__pyx_type___pyx_memoryview;
    3726             :   PyObject *__pyx_type___pyx_memoryviewslice;
    3727             :   #endif
    3728             :   PyTypeObject *__pyx_array_type;
    3729             :   PyTypeObject *__pyx_MemviewEnum_type;
    3730             :   PyTypeObject *__pyx_memoryview_type;
    3731             :   PyTypeObject *__pyx_memoryviewslice_type;
    3732             :   PyObject *__pyx_kp_u_;
    3733             :   PyObject *__pyx_n_s_ASCII;
    3734             :   PyObject *__pyx_kp_s_All_dimensions_preceding_dimensi;
    3735             :   PyObject *__pyx_n_s_AssertionError;
    3736             :   PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri;
    3737             :   PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is;
    3738             :   PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor;
    3739             :   PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi;
    3740             :   PyObject *__pyx_kp_u_Cannot_index_with_type;
    3741             :   PyObject *__pyx_kp_s_Cannot_transpose_memoryview_with;
    3742             :   PyObject *__pyx_kp_s_Dimension_d_is_not_direct;
    3743             :   PyObject *__pyx_n_s_Ellipsis;
    3744             :   PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr;
    3745             :   PyObject *__pyx_kp_s_Expected_at_least_d_argument_s_g;
    3746             :   PyObject *__pyx_kp_s_Function_call_with_ambiguous_arg;
    3747             :   PyObject *__pyx_n_s_ImportError;
    3748             :   PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
    3749             :   PyObject *__pyx_n_s_IndexError;
    3750             :   PyObject *__pyx_kp_s_Index_out_of_bounds_axis_d;
    3751             :   PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte;
    3752             :   PyObject *__pyx_kp_u_Invalid_mode_expected_c_or_fortr;
    3753             :   PyObject *__pyx_kp_u_Invalid_shape_in_axis;
    3754             :   PyObject *__pyx_n_s_MemoryError;
    3755             :   PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x;
    3756             :   PyObject *__pyx_kp_s_MemoryView_of_r_object;
    3757             :   PyObject *__pyx_kp_s_No_matching_signature_found;
    3758             :   PyObject *__pyx_n_b_O;
    3759             :   PyObject *__pyx_kp_u_Out_of_bounds_on_buffer_access_a;
    3760             :   PyObject *__pyx_n_s_PickleError;
    3761             :   PyObject *__pyx_n_s_Sequence;
    3762             :   PyObject *__pyx_kp_s_Step_may_not_be_zero_axis_d;
    3763             :   PyObject *__pyx_n_s_TypeError;
    3764             :   PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
    3765             :   PyObject *__pyx_n_s_ValueError;
    3766             :   PyObject *__pyx_n_s_View_MemoryView;
    3767             :   PyObject *__pyx_kp_s__11;
    3768             :   PyObject *__pyx_kp_s__12;
    3769             :   PyObject *__pyx_kp_u__12;
    3770             :   PyObject *__pyx_kp_u__2;
    3771             :   PyObject *__pyx_n_s__3;
    3772             :   PyObject *__pyx_n_s__30;
    3773             :   PyObject *__pyx_kp_u__6;
    3774             :   PyObject *__pyx_kp_u__7;
    3775             :   PyObject *__pyx_n_s_abc;
    3776             :   PyObject *__pyx_n_s_allocate_buffer;
    3777             :   PyObject *__pyx_kp_u_and;
    3778             :   PyObject *__pyx_n_s_args;
    3779             :   PyObject *__pyx_n_s_asyncio_coroutines;
    3780             :   PyObject *__pyx_n_s_base;
    3781             :   PyObject *__pyx_n_s_c;
    3782             :   PyObject *__pyx_n_u_c;
    3783             :   PyObject *__pyx_n_s_class;
    3784             :   PyObject *__pyx_n_s_class_getitem;
    3785             :   PyObject *__pyx_n_s_cline_in_traceback;
    3786             :   PyObject *__pyx_n_s_collections;
    3787             :   PyObject *__pyx_kp_s_collections_abc;
    3788             :   PyObject *__pyx_kp_s_contiguous_and_direct;
    3789             :   PyObject *__pyx_kp_s_contiguous_and_indirect;
    3790             :   PyObject *__pyx_n_s_count;
    3791             :   PyObject *__pyx_n_s_defaults;
    3792             :   PyObject *__pyx_n_s_dict;
    3793             :   PyObject *__pyx_kp_u_disable;
    3794             :   PyObject *__pyx_n_s_double;
    3795             :   PyObject *__pyx_kp_s_double_complex;
    3796             :   PyObject *__pyx_n_s_dtype;
    3797             :   PyObject *__pyx_n_s_dtype_is_object;
    3798             :   PyObject *__pyx_kp_u_enable;
    3799             :   PyObject *__pyx_n_s_encode;
    3800             :   PyObject *__pyx_n_s_enumerate;
    3801             :   PyObject *__pyx_n_s_error;
    3802             :   PyObject *__pyx_n_s_flags;
    3803             :   PyObject *__pyx_n_s_float;
    3804             :   PyObject *__pyx_kp_s_float_complex;
    3805             :   PyObject *__pyx_n_s_format;
    3806             :   PyObject *__pyx_n_s_fortran;
    3807             :   PyObject *__pyx_n_u_fortran;
    3808             :   PyObject *__pyx_n_s_fused_sigindex;
    3809             :   PyObject *__pyx_kp_u_gc;
    3810             :   PyObject *__pyx_n_s_get;
    3811             :   PyObject *__pyx_n_s_getstate;
    3812             :   PyObject *__pyx_kp_u_got;
    3813             :   PyObject *__pyx_kp_u_got_differing_extents_in_dimensi;
    3814             :   PyObject *__pyx_kp_s_home_czgdp18079_Quansight_scipy;
    3815             :   PyObject *__pyx_n_s_i;
    3816             :   PyObject *__pyx_n_s_id;
    3817             :   PyObject *__pyx_n_s_import;
    3818             :   PyObject *__pyx_n_s_index;
    3819             :   PyObject *__pyx_n_s_initializing;
    3820             :   PyObject *__pyx_n_s_is_coroutine;
    3821             :   PyObject *__pyx_kp_u_isenabled;
    3822             :   PyObject *__pyx_n_s_itemsize;
    3823             :   PyObject *__pyx_kp_s_itemsize_0_for_cython_array;
    3824             :   PyObject *__pyx_n_s_kind;
    3825             :   PyObject *__pyx_n_s_kwargs;
    3826             :   PyObject *__pyx_kp_s_long_double;
    3827             :   PyObject *__pyx_kp_s_long_double_complex;
    3828             :   PyObject *__pyx_n_s_main;
    3829             :   PyObject *__pyx_n_s_memview;
    3830             :   PyObject *__pyx_n_s_mode;
    3831             :   PyObject *__pyx_n_s_n;
    3832             :   PyObject *__pyx_n_s_n_samples;
    3833             :   PyObject *__pyx_n_s_n_sections;
    3834             :   PyObject *__pyx_n_s_n_signals;
    3835             :   PyObject *__pyx_n_s_name;
    3836             :   PyObject *__pyx_n_s_name_2;
    3837             :   PyObject *__pyx_n_s_ndim;
    3838             :   PyObject *__pyx_n_s_new;
    3839             :   PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
    3840             :   PyObject *__pyx_n_s_numpy;
    3841             :   PyObject *__pyx_kp_u_numpy__core_multiarray_failed_to;
    3842             :   PyObject *__pyx_kp_u_numpy__core_umath_failed_to_impo;
    3843             :   PyObject *__pyx_n_s_obj;
    3844             :   PyObject *__pyx_n_s_object;
    3845             :   PyObject *__pyx_n_s_pack;
    3846             :   PyObject *__pyx_n_s_pickle;
    3847             :   PyObject *__pyx_n_s_pyx_PickleError;
    3848             :   PyObject *__pyx_n_s_pyx_checksum;
    3849             :   PyObject *__pyx_n_s_pyx_result;
    3850             :   PyObject *__pyx_n_s_pyx_state;
    3851             :   PyObject *__pyx_n_s_pyx_type;
    3852             :   PyObject *__pyx_n_s_pyx_unpickle_Enum;
    3853             :   PyObject *__pyx_n_s_pyx_vtable;
    3854             :   PyObject *__pyx_n_s_range;
    3855             :   PyObject *__pyx_n_s_reduce;
    3856             :   PyObject *__pyx_n_s_reduce_cython;
    3857             :   PyObject *__pyx_n_s_reduce_ex;
    3858             :   PyObject *__pyx_n_s_register;
    3859             :   PyObject *__pyx_n_s_s;
    3860             :   PyObject *__pyx_n_s_scipy_signal__sosfilt;
    3861             :   PyObject *__pyx_n_s_setstate;
    3862             :   PyObject *__pyx_n_s_setstate_cython;
    3863             :   PyObject *__pyx_n_s_shape;
    3864             :   PyObject *__pyx_n_s_signatures;
    3865             :   PyObject *__pyx_n_s_size;
    3866             :   PyObject *__pyx_n_s_sos;
    3867             :   PyObject *__pyx_n_s_sosfilt;
    3868             :   PyObject *__pyx_n_s_sosfilt_object;
    3869             :   PyObject *__pyx_n_s_spec;
    3870             :   PyObject *__pyx_n_s_split;
    3871             :   PyObject *__pyx_n_s_start;
    3872             :   PyObject *__pyx_n_s_step;
    3873             :   PyObject *__pyx_n_s_stop;
    3874             :   PyObject *__pyx_kp_s_strided_and_direct;
    3875             :   PyObject *__pyx_kp_s_strided_and_direct_or_indirect;
    3876             :   PyObject *__pyx_kp_s_strided_and_indirect;
    3877             :   PyObject *__pyx_kp_s_stringsource;
    3878             :   PyObject *__pyx_n_s_strip;
    3879             :   PyObject *__pyx_n_s_struct;
    3880             :   PyObject *__pyx_n_s_sys;
    3881             :   PyObject *__pyx_n_s_test;
    3882             :   PyObject *__pyx_kp_s_unable_to_allocate_array_data;
    3883             :   PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str;
    3884             :   PyObject *__pyx_n_s_unpack;
    3885             :   PyObject *__pyx_n_s_update;
    3886             :   PyObject *__pyx_n_s_values;
    3887             :   PyObject *__pyx_n_s_version_info;
    3888             :   PyObject *__pyx_n_s_x;
    3889             :   PyObject *__pyx_n_s_x_n;
    3890             :   PyObject *__pyx_n_s_xrange;
    3891             :   PyObject *__pyx_n_s_zi;
    3892             :   PyObject *__pyx_int_0;
    3893             :   PyObject *__pyx_int_1;
    3894             :   PyObject *__pyx_int_3;
    3895             :   PyObject *__pyx_int_112105877;
    3896             :   PyObject *__pyx_int_136983863;
    3897             :   PyObject *__pyx_int_184977713;
    3898             :   PyObject *__pyx_int_neg_1;
    3899             :   PyObject *__pyx_slice__5;
    3900             :   PyObject *__pyx_tuple__4;
    3901             :   PyObject *__pyx_tuple__8;
    3902             :   PyObject *__pyx_tuple__9;
    3903             :   PyObject *__pyx_tuple__10;
    3904             :   PyObject *__pyx_tuple__13;
    3905             :   PyObject *__pyx_tuple__14;
    3906             :   PyObject *__pyx_tuple__15;
    3907             :   PyObject *__pyx_tuple__16;
    3908             :   PyObject *__pyx_tuple__17;
    3909             :   PyObject *__pyx_tuple__18;
    3910             :   PyObject *__pyx_tuple__19;
    3911             :   PyObject *__pyx_tuple__20;
    3912             :   PyObject *__pyx_tuple__21;
    3913             :   PyObject *__pyx_tuple__22;
    3914             :   PyObject *__pyx_tuple__23;
    3915             :   PyObject *__pyx_tuple__24;
    3916             :   PyObject *__pyx_tuple__26;
    3917             :   PyObject *__pyx_tuple__28;
    3918             :   PyObject *__pyx_codeobj__25;
    3919             :   PyObject *__pyx_codeobj__27;
    3920             :   PyObject *__pyx_codeobj__29;
    3921             : } __pyx_mstate;
    3922             : 
    3923             : #if CYTHON_USE_MODULE_STATE
    3924             : #ifdef __cplusplus
    3925             : namespace {
    3926             :   extern struct PyModuleDef __pyx_moduledef;
    3927             : } /* anonymous namespace */
    3928             : #else
    3929             : static struct PyModuleDef __pyx_moduledef;
    3930             : #endif
    3931             : 
    3932             : #define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))
    3933             : 
    3934             : #define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))
    3935             : 
    3936             : #define __pyx_m (PyState_FindModule(&__pyx_moduledef))
    3937             : #else
    3938             : static __pyx_mstate __pyx_mstate_global_static =
    3939             : #ifdef __cplusplus
    3940             :     {};
    3941             : #else
    3942             :     {0};
    3943             : #endif
    3944             : static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
    3945             : #endif
    3946             : /* #### Code section: module_state_clear ### */
    3947             : #if CYTHON_USE_MODULE_STATE
    3948             : static int __pyx_m_clear(PyObject *m) {
    3949             :   __pyx_mstate *clear_module_state = __pyx_mstate(m);
    3950             :   if (!clear_module_state) return 0;
    3951             :   Py_CLEAR(clear_module_state->__pyx_d);
    3952             :   Py_CLEAR(clear_module_state->__pyx_b);
    3953             :   Py_CLEAR(clear_module_state->__pyx_cython_runtime);
    3954             :   Py_CLEAR(clear_module_state->__pyx_empty_tuple);
    3955             :   Py_CLEAR(clear_module_state->__pyx_empty_bytes);
    3956             :   Py_CLEAR(clear_module_state->__pyx_empty_unicode);
    3957             :   #ifdef __Pyx_CyFunction_USED
    3958             :   Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
    3959             :   #endif
    3960             :   #ifdef __Pyx_FusedFunction_USED
    3961             :   Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
    3962             :   #endif
    3963             :   Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
    3964             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_dtype);
    3965             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flatiter);
    3966             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_broadcast);
    3967             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ndarray);
    3968             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_generic);
    3969             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_number);
    3970             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_integer);
    3971             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_signedinteger);
    3972             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_unsignedinteger);
    3973             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_inexact);
    3974             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_floating);
    3975             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_complexfloating);
    3976             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flexible);
    3977             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_character);
    3978             :   Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ufunc);
    3979             :   Py_CLEAR(clear_module_state->__pyx_array_type);
    3980             :   Py_CLEAR(clear_module_state->__pyx_type___pyx_array);
    3981             :   Py_CLEAR(clear_module_state->__pyx_MemviewEnum_type);
    3982             :   Py_CLEAR(clear_module_state->__pyx_type___pyx_MemviewEnum);
    3983             :   Py_CLEAR(clear_module_state->__pyx_memoryview_type);
    3984             :   Py_CLEAR(clear_module_state->__pyx_type___pyx_memoryview);
    3985             :   Py_CLEAR(clear_module_state->__pyx_memoryviewslice_type);
    3986             :   Py_CLEAR(clear_module_state->__pyx_type___pyx_memoryviewslice);
    3987             :   Py_CLEAR(clear_module_state->__pyx_kp_u_);
    3988             :   Py_CLEAR(clear_module_state->__pyx_n_s_ASCII);
    3989             :   Py_CLEAR(clear_module_state->__pyx_kp_s_All_dimensions_preceding_dimensi);
    3990             :   Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError);
    3991             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Buffer_view_does_not_expose_stri);
    3992             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Can_only_create_a_buffer_that_is);
    3993             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_assign_to_read_only_memor);
    3994             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_create_writable_memory_vi);
    3995             :   Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_index_with_type);
    3996             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_transpose_memoryview_with);
    3997             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Dimension_d_is_not_direct);
    3998             :   Py_CLEAR(clear_module_state->__pyx_n_s_Ellipsis);
    3999             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Empty_shape_tuple_for_cython_arr);
    4000             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Expected_at_least_d_argument_s_g);
    4001             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Function_call_with_ambiguous_arg);
    4002             :   Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
    4003             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
    4004             :   Py_CLEAR(clear_module_state->__pyx_n_s_IndexError);
    4005             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Index_out_of_bounds_axis_d);
    4006             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Indirect_dimensions_not_supporte);
    4007             :   Py_CLEAR(clear_module_state->__pyx_kp_u_Invalid_mode_expected_c_or_fortr);
    4008             :   Py_CLEAR(clear_module_state->__pyx_kp_u_Invalid_shape_in_axis);
    4009             :   Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError);
    4010             :   Py_CLEAR(clear_module_state->__pyx_kp_s_MemoryView_of_r_at_0x_x);
    4011             :   Py_CLEAR(clear_module_state->__pyx_kp_s_MemoryView_of_r_object);
    4012             :   Py_CLEAR(clear_module_state->__pyx_kp_s_No_matching_signature_found);
    4013             :   Py_CLEAR(clear_module_state->__pyx_n_b_O);
    4014             :   Py_CLEAR(clear_module_state->__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
    4015             :   Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
    4016             :   Py_CLEAR(clear_module_state->__pyx_n_s_Sequence);
    4017             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Step_may_not_be_zero_axis_d);
    4018             :   Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
    4019             :   Py_CLEAR(clear_module_state->__pyx_kp_s_Unable_to_convert_item_to_object);
    4020             :   Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
    4021             :   Py_CLEAR(clear_module_state->__pyx_n_s_View_MemoryView);
    4022             :   Py_CLEAR(clear_module_state->__pyx_kp_s__11);
    4023             :   Py_CLEAR(clear_module_state->__pyx_kp_s__12);
    4024             :   Py_CLEAR(clear_module_state->__pyx_kp_u__12);
    4025             :   Py_CLEAR(clear_module_state->__pyx_kp_u__2);
    4026             :   Py_CLEAR(clear_module_state->__pyx_n_s__3);
    4027             :   Py_CLEAR(clear_module_state->__pyx_n_s__30);
    4028             :   Py_CLEAR(clear_module_state->__pyx_kp_u__6);
    4029             :   Py_CLEAR(clear_module_state->__pyx_kp_u__7);
    4030             :   Py_CLEAR(clear_module_state->__pyx_n_s_abc);
    4031             :   Py_CLEAR(clear_module_state->__pyx_n_s_allocate_buffer);
    4032             :   Py_CLEAR(clear_module_state->__pyx_kp_u_and);
    4033             :   Py_CLEAR(clear_module_state->__pyx_n_s_args);
    4034             :   Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
    4035             :   Py_CLEAR(clear_module_state->__pyx_n_s_base);
    4036             :   Py_CLEAR(clear_module_state->__pyx_n_s_c);
    4037             :   Py_CLEAR(clear_module_state->__pyx_n_u_c);
    4038             :   Py_CLEAR(clear_module_state->__pyx_n_s_class);
    4039             :   Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
    4040             :   Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
    4041             :   Py_CLEAR(clear_module_state->__pyx_n_s_collections);
    4042             :   Py_CLEAR(clear_module_state->__pyx_kp_s_collections_abc);
    4043             :   Py_CLEAR(clear_module_state->__pyx_kp_s_contiguous_and_direct);
    4044             :   Py_CLEAR(clear_module_state->__pyx_kp_s_contiguous_and_indirect);
    4045             :   Py_CLEAR(clear_module_state->__pyx_n_s_count);
    4046             :   Py_CLEAR(clear_module_state->__pyx_n_s_defaults);
    4047             :   Py_CLEAR(clear_module_state->__pyx_n_s_dict);
    4048             :   Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
    4049             :   Py_CLEAR(clear_module_state->__pyx_n_s_double);
    4050             :   Py_CLEAR(clear_module_state->__pyx_kp_s_double_complex);
    4051             :   Py_CLEAR(clear_module_state->__pyx_n_s_dtype);
    4052             :   Py_CLEAR(clear_module_state->__pyx_n_s_dtype_is_object);
    4053             :   Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
    4054             :   Py_CLEAR(clear_module_state->__pyx_n_s_encode);
    4055             :   Py_CLEAR(clear_module_state->__pyx_n_s_enumerate);
    4056             :   Py_CLEAR(clear_module_state->__pyx_n_s_error);
    4057             :   Py_CLEAR(clear_module_state->__pyx_n_s_flags);
    4058             :   Py_CLEAR(clear_module_state->__pyx_n_s_float);
    4059             :   Py_CLEAR(clear_module_state->__pyx_kp_s_float_complex);
    4060             :   Py_CLEAR(clear_module_state->__pyx_n_s_format);
    4061             :   Py_CLEAR(clear_module_state->__pyx_n_s_fortran);
    4062             :   Py_CLEAR(clear_module_state->__pyx_n_u_fortran);
    4063             :   Py_CLEAR(clear_module_state->__pyx_n_s_fused_sigindex);
    4064             :   Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
    4065             :   Py_CLEAR(clear_module_state->__pyx_n_s_get);
    4066             :   Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
    4067             :   Py_CLEAR(clear_module_state->__pyx_kp_u_got);
    4068             :   Py_CLEAR(clear_module_state->__pyx_kp_u_got_differing_extents_in_dimensi);
    4069             :   Py_CLEAR(clear_module_state->__pyx_kp_s_home_czgdp18079_Quansight_scipy);
    4070             :   Py_CLEAR(clear_module_state->__pyx_n_s_i);
    4071             :   Py_CLEAR(clear_module_state->__pyx_n_s_id);
    4072             :   Py_CLEAR(clear_module_state->__pyx_n_s_import);
    4073             :   Py_CLEAR(clear_module_state->__pyx_n_s_index);
    4074             :   Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
    4075             :   Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
    4076             :   Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
    4077             :   Py_CLEAR(clear_module_state->__pyx_n_s_itemsize);
    4078             :   Py_CLEAR(clear_module_state->__pyx_kp_s_itemsize_0_for_cython_array);
    4079             :   Py_CLEAR(clear_module_state->__pyx_n_s_kind);
    4080             :   Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
    4081             :   Py_CLEAR(clear_module_state->__pyx_kp_s_long_double);
    4082             :   Py_CLEAR(clear_module_state->__pyx_kp_s_long_double_complex);
    4083             :   Py_CLEAR(clear_module_state->__pyx_n_s_main);
    4084             :   Py_CLEAR(clear_module_state->__pyx_n_s_memview);
    4085             :   Py_CLEAR(clear_module_state->__pyx_n_s_mode);
    4086             :   Py_CLEAR(clear_module_state->__pyx_n_s_n);
    4087             :   Py_CLEAR(clear_module_state->__pyx_n_s_n_samples);
    4088             :   Py_CLEAR(clear_module_state->__pyx_n_s_n_sections);
    4089             :   Py_CLEAR(clear_module_state->__pyx_n_s_n_signals);
    4090             :   Py_CLEAR(clear_module_state->__pyx_n_s_name);
    4091             :   Py_CLEAR(clear_module_state->__pyx_n_s_name_2);
    4092             :   Py_CLEAR(clear_module_state->__pyx_n_s_ndim);
    4093             :   Py_CLEAR(clear_module_state->__pyx_n_s_new);
    4094             :   Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
    4095             :   Py_CLEAR(clear_module_state->__pyx_n_s_numpy);
    4096             :   Py_CLEAR(clear_module_state->__pyx_kp_u_numpy__core_multiarray_failed_to);
    4097             :   Py_CLEAR(clear_module_state->__pyx_kp_u_numpy__core_umath_failed_to_impo);
    4098             :   Py_CLEAR(clear_module_state->__pyx_n_s_obj);
    4099             :   Py_CLEAR(clear_module_state->__pyx_n_s_object);
    4100             :   Py_CLEAR(clear_module_state->__pyx_n_s_pack);
    4101             :   Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
    4102             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
    4103             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum);
    4104             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result);
    4105             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
    4106             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type);
    4107             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_Enum);
    4108             :   Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
    4109             :   Py_CLEAR(clear_module_state->__pyx_n_s_range);
    4110             :   Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
    4111             :   Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
    4112             :   Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
    4113             :   Py_CLEAR(clear_module_state->__pyx_n_s_register);
    4114             :   Py_CLEAR(clear_module_state->__pyx_n_s_s);
    4115             :   Py_CLEAR(clear_module_state->__pyx_n_s_scipy_signal__sosfilt);
    4116             :   Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
    4117             :   Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
    4118             :   Py_CLEAR(clear_module_state->__pyx_n_s_shape);
    4119             :   Py_CLEAR(clear_module_state->__pyx_n_s_signatures);
    4120             :   Py_CLEAR(clear_module_state->__pyx_n_s_size);
    4121             :   Py_CLEAR(clear_module_state->__pyx_n_s_sos);
    4122             :   Py_CLEAR(clear_module_state->__pyx_n_s_sosfilt);
    4123             :   Py_CLEAR(clear_module_state->__pyx_n_s_sosfilt_object);
    4124             :   Py_CLEAR(clear_module_state->__pyx_n_s_spec);
    4125             :   Py_CLEAR(clear_module_state->__pyx_n_s_split);
    4126             :   Py_CLEAR(clear_module_state->__pyx_n_s_start);
    4127             :   Py_CLEAR(clear_module_state->__pyx_n_s_step);
    4128             :   Py_CLEAR(clear_module_state->__pyx_n_s_stop);
    4129             :   Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_direct);
    4130             :   Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_direct_or_indirect);
    4131             :   Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_indirect);
    4132             :   Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
    4133             :   Py_CLEAR(clear_module_state->__pyx_n_s_strip);
    4134             :   Py_CLEAR(clear_module_state->__pyx_n_s_struct);
    4135             :   Py_CLEAR(clear_module_state->__pyx_n_s_sys);
    4136             :   Py_CLEAR(clear_module_state->__pyx_n_s_test);
    4137             :   Py_CLEAR(clear_module_state->__pyx_kp_s_unable_to_allocate_array_data);
    4138             :   Py_CLEAR(clear_module_state->__pyx_kp_s_unable_to_allocate_shape_and_str);
    4139             :   Py_CLEAR(clear_module_state->__pyx_n_s_unpack);
    4140             :   Py_CLEAR(clear_module_state->__pyx_n_s_update);
    4141             :   Py_CLEAR(clear_module_state->__pyx_n_s_values);
    4142             :   Py_CLEAR(clear_module_state->__pyx_n_s_version_info);
    4143             :   Py_CLEAR(clear_module_state->__pyx_n_s_x);
    4144             :   Py_CLEAR(clear_module_state->__pyx_n_s_x_n);
    4145             :   Py_CLEAR(clear_module_state->__pyx_n_s_xrange);
    4146             :   Py_CLEAR(clear_module_state->__pyx_n_s_zi);
    4147             :   Py_CLEAR(clear_module_state->__pyx_int_0);
    4148             :   Py_CLEAR(clear_module_state->__pyx_int_1);
    4149             :   Py_CLEAR(clear_module_state->__pyx_int_3);
    4150             :   Py_CLEAR(clear_module_state->__pyx_int_112105877);
    4151             :   Py_CLEAR(clear_module_state->__pyx_int_136983863);
    4152             :   Py_CLEAR(clear_module_state->__pyx_int_184977713);
    4153             :   Py_CLEAR(clear_module_state->__pyx_int_neg_1);
    4154             :   Py_CLEAR(clear_module_state->__pyx_slice__5);
    4155             :   Py_CLEAR(clear_module_state->__pyx_tuple__4);
    4156             :   Py_CLEAR(clear_module_state->__pyx_tuple__8);
    4157             :   Py_CLEAR(clear_module_state->__pyx_tuple__9);
    4158             :   Py_CLEAR(clear_module_state->__pyx_tuple__10);
    4159             :   Py_CLEAR(clear_module_state->__pyx_tuple__13);
    4160             :   Py_CLEAR(clear_module_state->__pyx_tuple__14);
    4161             :   Py_CLEAR(clear_module_state->__pyx_tuple__15);
    4162             :   Py_CLEAR(clear_module_state->__pyx_tuple__16);
    4163             :   Py_CLEAR(clear_module_state->__pyx_tuple__17);
    4164             :   Py_CLEAR(clear_module_state->__pyx_tuple__18);
    4165             :   Py_CLEAR(clear_module_state->__pyx_tuple__19);
    4166             :   Py_CLEAR(clear_module_state->__pyx_tuple__20);
    4167             :   Py_CLEAR(clear_module_state->__pyx_tuple__21);
    4168             :   Py_CLEAR(clear_module_state->__pyx_tuple__22);
    4169             :   Py_CLEAR(clear_module_state->__pyx_tuple__23);
    4170             :   Py_CLEAR(clear_module_state->__pyx_tuple__24);
    4171             :   Py_CLEAR(clear_module_state->__pyx_tuple__26);
    4172             :   Py_CLEAR(clear_module_state->__pyx_tuple__28);
    4173             :   Py_CLEAR(clear_module_state->__pyx_codeobj__25);
    4174             :   Py_CLEAR(clear_module_state->__pyx_codeobj__27);
    4175             :   Py_CLEAR(clear_module_state->__pyx_codeobj__29);
    4176             :   return 0;
    4177             : }
    4178             : #endif
    4179             : /* #### Code section: module_state_traverse ### */
    4180             : #if CYTHON_USE_MODULE_STATE
    4181             : static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
    4182             :   __pyx_mstate *traverse_module_state = __pyx_mstate(m);
    4183             :   if (!traverse_module_state) return 0;
    4184             :   Py_VISIT(traverse_module_state->__pyx_d);
    4185             :   Py_VISIT(traverse_module_state->__pyx_b);
    4186             :   Py_VISIT(traverse_module_state->__pyx_cython_runtime);
    4187             :   Py_VISIT(traverse_module_state->__pyx_empty_tuple);
    4188             :   Py_VISIT(traverse_module_state->__pyx_empty_bytes);
    4189             :   Py_VISIT(traverse_module_state->__pyx_empty_unicode);
    4190             :   #ifdef __Pyx_CyFunction_USED
    4191             :   Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
    4192             :   #endif
    4193             :   #ifdef __Pyx_FusedFunction_USED
    4194             :   Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
    4195             :   #endif
    4196             :   Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
    4197             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype);
    4198             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter);
    4199             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_broadcast);
    4200             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ndarray);
    4201             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_generic);
    4202             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_number);
    4203             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_integer);
    4204             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_signedinteger);
    4205             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_unsignedinteger);
    4206             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_inexact);
    4207             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_floating);
    4208             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_complexfloating);
    4209             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flexible);
    4210             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_character);
    4211             :   Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ufunc);
    4212             :   Py_VISIT(traverse_module_state->__pyx_array_type);
    4213             :   Py_VISIT(traverse_module_state->__pyx_type___pyx_array);
    4214             :   Py_VISIT(traverse_module_state->__pyx_MemviewEnum_type);
    4215             :   Py_VISIT(traverse_module_state->__pyx_type___pyx_MemviewEnum);
    4216             :   Py_VISIT(traverse_module_state->__pyx_memoryview_type);
    4217             :   Py_VISIT(traverse_module_state->__pyx_type___pyx_memoryview);
    4218             :   Py_VISIT(traverse_module_state->__pyx_memoryviewslice_type);
    4219             :   Py_VISIT(traverse_module_state->__pyx_type___pyx_memoryviewslice);
    4220             :   Py_VISIT(traverse_module_state->__pyx_kp_u_);
    4221             :   Py_VISIT(traverse_module_state->__pyx_n_s_ASCII);
    4222             :   Py_VISIT(traverse_module_state->__pyx_kp_s_All_dimensions_preceding_dimensi);
    4223             :   Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError);
    4224             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Buffer_view_does_not_expose_stri);
    4225             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Can_only_create_a_buffer_that_is);
    4226             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_assign_to_read_only_memor);
    4227             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_create_writable_memory_vi);
    4228             :   Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_index_with_type);
    4229             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_transpose_memoryview_with);
    4230             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Dimension_d_is_not_direct);
    4231             :   Py_VISIT(traverse_module_state->__pyx_n_s_Ellipsis);
    4232             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Empty_shape_tuple_for_cython_arr);
    4233             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Expected_at_least_d_argument_s_g);
    4234             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Function_call_with_ambiguous_arg);
    4235             :   Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
    4236             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
    4237             :   Py_VISIT(traverse_module_state->__pyx_n_s_IndexError);
    4238             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Index_out_of_bounds_axis_d);
    4239             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Indirect_dimensions_not_supporte);
    4240             :   Py_VISIT(traverse_module_state->__pyx_kp_u_Invalid_mode_expected_c_or_fortr);
    4241             :   Py_VISIT(traverse_module_state->__pyx_kp_u_Invalid_shape_in_axis);
    4242             :   Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError);
    4243             :   Py_VISIT(traverse_module_state->__pyx_kp_s_MemoryView_of_r_at_0x_x);
    4244             :   Py_VISIT(traverse_module_state->__pyx_kp_s_MemoryView_of_r_object);
    4245             :   Py_VISIT(traverse_module_state->__pyx_kp_s_No_matching_signature_found);
    4246             :   Py_VISIT(traverse_module_state->__pyx_n_b_O);
    4247             :   Py_VISIT(traverse_module_state->__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
    4248             :   Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
    4249             :   Py_VISIT(traverse_module_state->__pyx_n_s_Sequence);
    4250             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Step_may_not_be_zero_axis_d);
    4251             :   Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
    4252             :   Py_VISIT(traverse_module_state->__pyx_kp_s_Unable_to_convert_item_to_object);
    4253             :   Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
    4254             :   Py_VISIT(traverse_module_state->__pyx_n_s_View_MemoryView);
    4255             :   Py_VISIT(traverse_module_state->__pyx_kp_s__11);
    4256             :   Py_VISIT(traverse_module_state->__pyx_kp_s__12);
    4257             :   Py_VISIT(traverse_module_state->__pyx_kp_u__12);
    4258             :   Py_VISIT(traverse_module_state->__pyx_kp_u__2);
    4259             :   Py_VISIT(traverse_module_state->__pyx_n_s__3);
    4260             :   Py_VISIT(traverse_module_state->__pyx_n_s__30);
    4261             :   Py_VISIT(traverse_module_state->__pyx_kp_u__6);
    4262             :   Py_VISIT(traverse_module_state->__pyx_kp_u__7);
    4263             :   Py_VISIT(traverse_module_state->__pyx_n_s_abc);
    4264             :   Py_VISIT(traverse_module_state->__pyx_n_s_allocate_buffer);
    4265             :   Py_VISIT(traverse_module_state->__pyx_kp_u_and);
    4266             :   Py_VISIT(traverse_module_state->__pyx_n_s_args);
    4267             :   Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
    4268             :   Py_VISIT(traverse_module_state->__pyx_n_s_base);
    4269             :   Py_VISIT(traverse_module_state->__pyx_n_s_c);
    4270             :   Py_VISIT(traverse_module_state->__pyx_n_u_c);
    4271             :   Py_VISIT(traverse_module_state->__pyx_n_s_class);
    4272             :   Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
    4273             :   Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
    4274             :   Py_VISIT(traverse_module_state->__pyx_n_s_collections);
    4275             :   Py_VISIT(traverse_module_state->__pyx_kp_s_collections_abc);
    4276             :   Py_VISIT(traverse_module_state->__pyx_kp_s_contiguous_and_direct);
    4277             :   Py_VISIT(traverse_module_state->__pyx_kp_s_contiguous_and_indirect);
    4278             :   Py_VISIT(traverse_module_state->__pyx_n_s_count);
    4279             :   Py_VISIT(traverse_module_state->__pyx_n_s_defaults);
    4280             :   Py_VISIT(traverse_module_state->__pyx_n_s_dict);
    4281             :   Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
    4282             :   Py_VISIT(traverse_module_state->__pyx_n_s_double);
    4283             :   Py_VISIT(traverse_module_state->__pyx_kp_s_double_complex);
    4284             :   Py_VISIT(traverse_module_state->__pyx_n_s_dtype);
    4285             :   Py_VISIT(traverse_module_state->__pyx_n_s_dtype_is_object);
    4286             :   Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
    4287             :   Py_VISIT(traverse_module_state->__pyx_n_s_encode);
    4288             :   Py_VISIT(traverse_module_state->__pyx_n_s_enumerate);
    4289             :   Py_VISIT(traverse_module_state->__pyx_n_s_error);
    4290             :   Py_VISIT(traverse_module_state->__pyx_n_s_flags);
    4291             :   Py_VISIT(traverse_module_state->__pyx_n_s_float);
    4292             :   Py_VISIT(traverse_module_state->__pyx_kp_s_float_complex);
    4293             :   Py_VISIT(traverse_module_state->__pyx_n_s_format);
    4294             :   Py_VISIT(traverse_module_state->__pyx_n_s_fortran);
    4295             :   Py_VISIT(traverse_module_state->__pyx_n_u_fortran);
    4296             :   Py_VISIT(traverse_module_state->__pyx_n_s_fused_sigindex);
    4297             :   Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
    4298             :   Py_VISIT(traverse_module_state->__pyx_n_s_get);
    4299             :   Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
    4300             :   Py_VISIT(traverse_module_state->__pyx_kp_u_got);
    4301             :   Py_VISIT(traverse_module_state->__pyx_kp_u_got_differing_extents_in_dimensi);
    4302             :   Py_VISIT(traverse_module_state->__pyx_kp_s_home_czgdp18079_Quansight_scipy);
    4303             :   Py_VISIT(traverse_module_state->__pyx_n_s_i);
    4304             :   Py_VISIT(traverse_module_state->__pyx_n_s_id);
    4305             :   Py_VISIT(traverse_module_state->__pyx_n_s_import);
    4306             :   Py_VISIT(traverse_module_state->__pyx_n_s_index);
    4307             :   Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
    4308             :   Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
    4309             :   Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
    4310             :   Py_VISIT(traverse_module_state->__pyx_n_s_itemsize);
    4311             :   Py_VISIT(traverse_module_state->__pyx_kp_s_itemsize_0_for_cython_array);
    4312             :   Py_VISIT(traverse_module_state->__pyx_n_s_kind);
    4313             :   Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
    4314             :   Py_VISIT(traverse_module_state->__pyx_kp_s_long_double);
    4315             :   Py_VISIT(traverse_module_state->__pyx_kp_s_long_double_complex);
    4316             :   Py_VISIT(traverse_module_state->__pyx_n_s_main);
    4317             :   Py_VISIT(traverse_module_state->__pyx_n_s_memview);
    4318             :   Py_VISIT(traverse_module_state->__pyx_n_s_mode);
    4319             :   Py_VISIT(traverse_module_state->__pyx_n_s_n);
    4320             :   Py_VISIT(traverse_module_state->__pyx_n_s_n_samples);
    4321             :   Py_VISIT(traverse_module_state->__pyx_n_s_n_sections);
    4322             :   Py_VISIT(traverse_module_state->__pyx_n_s_n_signals);
    4323             :   Py_VISIT(traverse_module_state->__pyx_n_s_name);
    4324             :   Py_VISIT(traverse_module_state->__pyx_n_s_name_2);
    4325             :   Py_VISIT(traverse_module_state->__pyx_n_s_ndim);
    4326             :   Py_VISIT(traverse_module_state->__pyx_n_s_new);
    4327             :   Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
    4328             :   Py_VISIT(traverse_module_state->__pyx_n_s_numpy);
    4329             :   Py_VISIT(traverse_module_state->__pyx_kp_u_numpy__core_multiarray_failed_to);
    4330             :   Py_VISIT(traverse_module_state->__pyx_kp_u_numpy__core_umath_failed_to_impo);
    4331             :   Py_VISIT(traverse_module_state->__pyx_n_s_obj);
    4332             :   Py_VISIT(traverse_module_state->__pyx_n_s_object);
    4333             :   Py_VISIT(traverse_module_state->__pyx_n_s_pack);
    4334             :   Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
    4335             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
    4336             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum);
    4337             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result);
    4338             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
    4339             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type);
    4340             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_Enum);
    4341             :   Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
    4342             :   Py_VISIT(traverse_module_state->__pyx_n_s_range);
    4343             :   Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
    4344             :   Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
    4345             :   Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
    4346             :   Py_VISIT(traverse_module_state->__pyx_n_s_register);
    4347             :   Py_VISIT(traverse_module_state->__pyx_n_s_s);
    4348             :   Py_VISIT(traverse_module_state->__pyx_n_s_scipy_signal__sosfilt);
    4349             :   Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
    4350             :   Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
    4351             :   Py_VISIT(traverse_module_state->__pyx_n_s_shape);
    4352             :   Py_VISIT(traverse_module_state->__pyx_n_s_signatures);
    4353             :   Py_VISIT(traverse_module_state->__pyx_n_s_size);
    4354             :   Py_VISIT(traverse_module_state->__pyx_n_s_sos);
    4355             :   Py_VISIT(traverse_module_state->__pyx_n_s_sosfilt);
    4356             :   Py_VISIT(traverse_module_state->__pyx_n_s_sosfilt_object);
    4357             :   Py_VISIT(traverse_module_state->__pyx_n_s_spec);
    4358             :   Py_VISIT(traverse_module_state->__pyx_n_s_split);
    4359             :   Py_VISIT(traverse_module_state->__pyx_n_s_start);
    4360             :   Py_VISIT(traverse_module_state->__pyx_n_s_step);
    4361             :   Py_VISIT(traverse_module_state->__pyx_n_s_stop);
    4362             :   Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_direct);
    4363             :   Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_direct_or_indirect);
    4364             :   Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_indirect);
    4365             :   Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
    4366             :   Py_VISIT(traverse_module_state->__pyx_n_s_strip);
    4367             :   Py_VISIT(traverse_module_state->__pyx_n_s_struct);
    4368             :   Py_VISIT(traverse_module_state->__pyx_n_s_sys);
    4369             :   Py_VISIT(traverse_module_state->__pyx_n_s_test);
    4370             :   Py_VISIT(traverse_module_state->__pyx_kp_s_unable_to_allocate_array_data);
    4371             :   Py_VISIT(traverse_module_state->__pyx_kp_s_unable_to_allocate_shape_and_str);
    4372             :   Py_VISIT(traverse_module_state->__pyx_n_s_unpack);
    4373             :   Py_VISIT(traverse_module_state->__pyx_n_s_update);
    4374             :   Py_VISIT(traverse_module_state->__pyx_n_s_values);
    4375             :   Py_VISIT(traverse_module_state->__pyx_n_s_version_info);
    4376             :   Py_VISIT(traverse_module_state->__pyx_n_s_x);
    4377             :   Py_VISIT(traverse_module_state->__pyx_n_s_x_n);
    4378             :   Py_VISIT(traverse_module_state->__pyx_n_s_xrange);
    4379             :   Py_VISIT(traverse_module_state->__pyx_n_s_zi);
    4380             :   Py_VISIT(traverse_module_state->__pyx_int_0);
    4381             :   Py_VISIT(traverse_module_state->__pyx_int_1);
    4382             :   Py_VISIT(traverse_module_state->__pyx_int_3);
    4383             :   Py_VISIT(traverse_module_state->__pyx_int_112105877);
    4384             :   Py_VISIT(traverse_module_state->__pyx_int_136983863);
    4385             :   Py_VISIT(traverse_module_state->__pyx_int_184977713);
    4386             :   Py_VISIT(traverse_module_state->__pyx_int_neg_1);
    4387             :   Py_VISIT(traverse_module_state->__pyx_slice__5);
    4388             :   Py_VISIT(traverse_module_state->__pyx_tuple__4);
    4389             :   Py_VISIT(traverse_module_state->__pyx_tuple__8);
    4390             :   Py_VISIT(traverse_module_state->__pyx_tuple__9);
    4391             :   Py_VISIT(traverse_module_state->__pyx_tuple__10);
    4392             :   Py_VISIT(traverse_module_state->__pyx_tuple__13);
    4393             :   Py_VISIT(traverse_module_state->__pyx_tuple__14);
    4394             :   Py_VISIT(traverse_module_state->__pyx_tuple__15);
    4395             :   Py_VISIT(traverse_module_state->__pyx_tuple__16);
    4396             :   Py_VISIT(traverse_module_state->__pyx_tuple__17);
    4397             :   Py_VISIT(traverse_module_state->__pyx_tuple__18);
    4398             :   Py_VISIT(traverse_module_state->__pyx_tuple__19);
    4399             :   Py_VISIT(traverse_module_state->__pyx_tuple__20);
    4400             :   Py_VISIT(traverse_module_state->__pyx_tuple__21);
    4401             :   Py_VISIT(traverse_module_state->__pyx_tuple__22);
    4402             :   Py_VISIT(traverse_module_state->__pyx_tuple__23);
    4403             :   Py_VISIT(traverse_module_state->__pyx_tuple__24);
    4404             :   Py_VISIT(traverse_module_state->__pyx_tuple__26);
    4405             :   Py_VISIT(traverse_module_state->__pyx_tuple__28);
    4406             :   Py_VISIT(traverse_module_state->__pyx_codeobj__25);
    4407             :   Py_VISIT(traverse_module_state->__pyx_codeobj__27);
    4408             :   Py_VISIT(traverse_module_state->__pyx_codeobj__29);
    4409             :   return 0;
    4410             : }
    4411             : #endif
    4412             : /* #### Code section: module_state_defines ### */
    4413             : #define __pyx_d __pyx_mstate_global->__pyx_d
    4414             : #define __pyx_b __pyx_mstate_global->__pyx_b
    4415             : #define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
    4416             : #define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
    4417             : #define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
    4418             : #define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
    4419             : #ifdef __Pyx_CyFunction_USED
    4420             : #define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
    4421             : #endif
    4422             : #ifdef __Pyx_FusedFunction_USED
    4423             : #define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
    4424             : #endif
    4425             : #ifdef __Pyx_Generator_USED
    4426             : #define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
    4427             : #endif
    4428             : #ifdef __Pyx_IterableCoroutine_USED
    4429             : #define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
    4430             : #endif
    4431             : #ifdef __Pyx_Coroutine_USED
    4432             : #define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
    4433             : #endif
    4434             : #ifdef __Pyx_Coroutine_USED
    4435             : #define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
    4436             : #endif
    4437             : #if CYTHON_USE_MODULE_STATE
    4438             : #endif
    4439             : #if CYTHON_USE_MODULE_STATE
    4440             : #endif
    4441             : #if CYTHON_USE_MODULE_STATE
    4442             : #endif
    4443             : #if CYTHON_USE_MODULE_STATE
    4444             : #endif
    4445             : #define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type
    4446             : #if CYTHON_USE_MODULE_STATE
    4447             : #endif
    4448             : #if CYTHON_USE_MODULE_STATE
    4449             : #endif
    4450             : #if CYTHON_USE_MODULE_STATE
    4451             : #endif
    4452             : #if CYTHON_USE_MODULE_STATE
    4453             : #endif
    4454             : #if CYTHON_USE_MODULE_STATE
    4455             : #endif
    4456             : #define __pyx_ptype_5numpy_dtype __pyx_mstate_global->__pyx_ptype_5numpy_dtype
    4457             : #define __pyx_ptype_5numpy_flatiter __pyx_mstate_global->__pyx_ptype_5numpy_flatiter
    4458             : #define __pyx_ptype_5numpy_broadcast __pyx_mstate_global->__pyx_ptype_5numpy_broadcast
    4459             : #define __pyx_ptype_5numpy_ndarray __pyx_mstate_global->__pyx_ptype_5numpy_ndarray
    4460             : #define __pyx_ptype_5numpy_generic __pyx_mstate_global->__pyx_ptype_5numpy_generic
    4461             : #define __pyx_ptype_5numpy_number __pyx_mstate_global->__pyx_ptype_5numpy_number
    4462             : #define __pyx_ptype_5numpy_integer __pyx_mstate_global->__pyx_ptype_5numpy_integer
    4463             : #define __pyx_ptype_5numpy_signedinteger __pyx_mstate_global->__pyx_ptype_5numpy_signedinteger
    4464             : #define __pyx_ptype_5numpy_unsignedinteger __pyx_mstate_global->__pyx_ptype_5numpy_unsignedinteger
    4465             : #define __pyx_ptype_5numpy_inexact __pyx_mstate_global->__pyx_ptype_5numpy_inexact
    4466             : #define __pyx_ptype_5numpy_floating __pyx_mstate_global->__pyx_ptype_5numpy_floating
    4467             : #define __pyx_ptype_5numpy_complexfloating __pyx_mstate_global->__pyx_ptype_5numpy_complexfloating
    4468             : #define __pyx_ptype_5numpy_flexible __pyx_mstate_global->__pyx_ptype_5numpy_flexible
    4469             : #define __pyx_ptype_5numpy_character __pyx_mstate_global->__pyx_ptype_5numpy_character
    4470             : #define __pyx_ptype_5numpy_ufunc __pyx_mstate_global->__pyx_ptype_5numpy_ufunc
    4471             : #if CYTHON_USE_MODULE_STATE
    4472             : #endif
    4473             : #if CYTHON_USE_MODULE_STATE
    4474             : #endif
    4475             : #if CYTHON_USE_MODULE_STATE
    4476             : #endif
    4477             : #if CYTHON_USE_MODULE_STATE
    4478             : #define __pyx_type___pyx_array __pyx_mstate_global->__pyx_type___pyx_array
    4479             : #define __pyx_type___pyx_MemviewEnum __pyx_mstate_global->__pyx_type___pyx_MemviewEnum
    4480             : #define __pyx_type___pyx_memoryview __pyx_mstate_global->__pyx_type___pyx_memoryview
    4481             : #define __pyx_type___pyx_memoryviewslice __pyx_mstate_global->__pyx_type___pyx_memoryviewslice
    4482             : #endif
    4483             : #define __pyx_array_type __pyx_mstate_global->__pyx_array_type
    4484             : #define __pyx_MemviewEnum_type __pyx_mstate_global->__pyx_MemviewEnum_type
    4485             : #define __pyx_memoryview_type __pyx_mstate_global->__pyx_memoryview_type
    4486             : #define __pyx_memoryviewslice_type __pyx_mstate_global->__pyx_memoryviewslice_type
    4487             : #define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_
    4488             : #define __pyx_n_s_ASCII __pyx_mstate_global->__pyx_n_s_ASCII
    4489             : #define __pyx_kp_s_All_dimensions_preceding_dimensi __pyx_mstate_global->__pyx_kp_s_All_dimensions_preceding_dimensi
    4490             : #define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError
    4491             : #define __pyx_kp_s_Buffer_view_does_not_expose_stri __pyx_mstate_global->__pyx_kp_s_Buffer_view_does_not_expose_stri
    4492             : #define __pyx_kp_s_Can_only_create_a_buffer_that_is __pyx_mstate_global->__pyx_kp_s_Can_only_create_a_buffer_that_is
    4493             : #define __pyx_kp_s_Cannot_assign_to_read_only_memor __pyx_mstate_global->__pyx_kp_s_Cannot_assign_to_read_only_memor
    4494             : #define __pyx_kp_s_Cannot_create_writable_memory_vi __pyx_mstate_global->__pyx_kp_s_Cannot_create_writable_memory_vi
    4495             : #define __pyx_kp_u_Cannot_index_with_type __pyx_mstate_global->__pyx_kp_u_Cannot_index_with_type
    4496             : #define __pyx_kp_s_Cannot_transpose_memoryview_with __pyx_mstate_global->__pyx_kp_s_Cannot_transpose_memoryview_with
    4497             : #define __pyx_kp_s_Dimension_d_is_not_direct __pyx_mstate_global->__pyx_kp_s_Dimension_d_is_not_direct
    4498             : #define __pyx_n_s_Ellipsis __pyx_mstate_global->__pyx_n_s_Ellipsis
    4499             : #define __pyx_kp_s_Empty_shape_tuple_for_cython_arr __pyx_mstate_global->__pyx_kp_s_Empty_shape_tuple_for_cython_arr
    4500             : #define __pyx_kp_s_Expected_at_least_d_argument_s_g __pyx_mstate_global->__pyx_kp_s_Expected_at_least_d_argument_s_g
    4501             : #define __pyx_kp_s_Function_call_with_ambiguous_arg __pyx_mstate_global->__pyx_kp_s_Function_call_with_ambiguous_arg
    4502             : #define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
    4503             : #define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
    4504             : #define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
    4505             : #define __pyx_kp_s_Index_out_of_bounds_axis_d __pyx_mstate_global->__pyx_kp_s_Index_out_of_bounds_axis_d
    4506             : #define __pyx_kp_s_Indirect_dimensions_not_supporte __pyx_mstate_global->__pyx_kp_s_Indirect_dimensions_not_supporte
    4507             : #define __pyx_kp_u_Invalid_mode_expected_c_or_fortr __pyx_mstate_global->__pyx_kp_u_Invalid_mode_expected_c_or_fortr
    4508             : #define __pyx_kp_u_Invalid_shape_in_axis __pyx_mstate_global->__pyx_kp_u_Invalid_shape_in_axis
    4509             : #define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
    4510             : #define __pyx_kp_s_MemoryView_of_r_at_0x_x __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_at_0x_x
    4511             : #define __pyx_kp_s_MemoryView_of_r_object __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_object
    4512             : #define __pyx_kp_s_No_matching_signature_found __pyx_mstate_global->__pyx_kp_s_No_matching_signature_found
    4513             : #define __pyx_n_b_O __pyx_mstate_global->__pyx_n_b_O
    4514             : #define __pyx_kp_u_Out_of_bounds_on_buffer_access_a __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a
    4515             : #define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
    4516             : #define __pyx_n_s_Sequence __pyx_mstate_global->__pyx_n_s_Sequence
    4517             : #define __pyx_kp_s_Step_may_not_be_zero_axis_d __pyx_mstate_global->__pyx_kp_s_Step_may_not_be_zero_axis_d
    4518             : #define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
    4519             : #define __pyx_kp_s_Unable_to_convert_item_to_object __pyx_mstate_global->__pyx_kp_s_Unable_to_convert_item_to_object
    4520             : #define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
    4521             : #define __pyx_n_s_View_MemoryView __pyx_mstate_global->__pyx_n_s_View_MemoryView
    4522             : #define __pyx_kp_s__11 __pyx_mstate_global->__pyx_kp_s__11
    4523             : #define __pyx_kp_s__12 __pyx_mstate_global->__pyx_kp_s__12
    4524             : #define __pyx_kp_u__12 __pyx_mstate_global->__pyx_kp_u__12
    4525             : #define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2
    4526             : #define __pyx_n_s__3 __pyx_mstate_global->__pyx_n_s__3
    4527             : #define __pyx_n_s__30 __pyx_mstate_global->__pyx_n_s__30
    4528             : #define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6
    4529             : #define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7
    4530             : #define __pyx_n_s_abc __pyx_mstate_global->__pyx_n_s_abc
    4531             : #define __pyx_n_s_allocate_buffer __pyx_mstate_global->__pyx_n_s_allocate_buffer
    4532             : #define __pyx_kp_u_and __pyx_mstate_global->__pyx_kp_u_and
    4533             : #define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
    4534             : #define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
    4535             : #define __pyx_n_s_base __pyx_mstate_global->__pyx_n_s_base
    4536             : #define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c
    4537             : #define __pyx_n_u_c __pyx_mstate_global->__pyx_n_u_c
    4538             : #define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class
    4539             : #define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
    4540             : #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
    4541             : #define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections
    4542             : #define __pyx_kp_s_collections_abc __pyx_mstate_global->__pyx_kp_s_collections_abc
    4543             : #define __pyx_kp_s_contiguous_and_direct __pyx_mstate_global->__pyx_kp_s_contiguous_and_direct
    4544             : #define __pyx_kp_s_contiguous_and_indirect __pyx_mstate_global->__pyx_kp_s_contiguous_and_indirect
    4545             : #define __pyx_n_s_count __pyx_mstate_global->__pyx_n_s_count
    4546             : #define __pyx_n_s_defaults __pyx_mstate_global->__pyx_n_s_defaults
    4547             : #define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
    4548             : #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
    4549             : #define __pyx_n_s_double __pyx_mstate_global->__pyx_n_s_double
    4550             : #define __pyx_kp_s_double_complex __pyx_mstate_global->__pyx_kp_s_double_complex
    4551             : #define __pyx_n_s_dtype __pyx_mstate_global->__pyx_n_s_dtype
    4552             : #define __pyx_n_s_dtype_is_object __pyx_mstate_global->__pyx_n_s_dtype_is_object
    4553             : #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
    4554             : #define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode
    4555             : #define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate
    4556             : #define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error
    4557             : #define __pyx_n_s_flags __pyx_mstate_global->__pyx_n_s_flags
    4558             : #define __pyx_n_s_float __pyx_mstate_global->__pyx_n_s_float
    4559             : #define __pyx_kp_s_float_complex __pyx_mstate_global->__pyx_kp_s_float_complex
    4560             : #define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
    4561             : #define __pyx_n_s_fortran __pyx_mstate_global->__pyx_n_s_fortran
    4562             : #define __pyx_n_u_fortran __pyx_mstate_global->__pyx_n_u_fortran
    4563             : #define __pyx_n_s_fused_sigindex __pyx_mstate_global->__pyx_n_s_fused_sigindex
    4564             : #define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
    4565             : #define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
    4566             : #define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
    4567             : #define __pyx_kp_u_got __pyx_mstate_global->__pyx_kp_u_got
    4568             : #define __pyx_kp_u_got_differing_extents_in_dimensi __pyx_mstate_global->__pyx_kp_u_got_differing_extents_in_dimensi
    4569             : #define __pyx_kp_s_home_czgdp18079_Quansight_scipy __pyx_mstate_global->__pyx_kp_s_home_czgdp18079_Quansight_scipy
    4570             : #define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
    4571             : #define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id
    4572             : #define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
    4573             : #define __pyx_n_s_index __pyx_mstate_global->__pyx_n_s_index
    4574             : #define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
    4575             : #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
    4576             : #define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
    4577             : #define __pyx_n_s_itemsize __pyx_mstate_global->__pyx_n_s_itemsize
    4578             : #define __pyx_kp_s_itemsize_0_for_cython_array __pyx_mstate_global->__pyx_kp_s_itemsize_0_for_cython_array
    4579             : #define __pyx_n_s_kind __pyx_mstate_global->__pyx_n_s_kind
    4580             : #define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
    4581             : #define __pyx_kp_s_long_double __pyx_mstate_global->__pyx_kp_s_long_double
    4582             : #define __pyx_kp_s_long_double_complex __pyx_mstate_global->__pyx_kp_s_long_double_complex
    4583             : #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
    4584             : #define __pyx_n_s_memview __pyx_mstate_global->__pyx_n_s_memview
    4585             : #define __pyx_n_s_mode __pyx_mstate_global->__pyx_n_s_mode
    4586             : #define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n
    4587             : #define __pyx_n_s_n_samples __pyx_mstate_global->__pyx_n_s_n_samples
    4588             : #define __pyx_n_s_n_sections __pyx_mstate_global->__pyx_n_s_n_sections
    4589             : #define __pyx_n_s_n_signals __pyx_mstate_global->__pyx_n_s_n_signals
    4590             : #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
    4591             : #define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2
    4592             : #define __pyx_n_s_ndim __pyx_mstate_global->__pyx_n_s_ndim
    4593             : #define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
    4594             : #define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non
    4595             : #define __pyx_n_s_numpy __pyx_mstate_global->__pyx_n_s_numpy
    4596             : #define __pyx_kp_u_numpy__core_multiarray_failed_to __pyx_mstate_global->__pyx_kp_u_numpy__core_multiarray_failed_to
    4597             : #define __pyx_kp_u_numpy__core_umath_failed_to_impo __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo
    4598             : #define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj
    4599             : #define __pyx_n_s_object __pyx_mstate_global->__pyx_n_s_object
    4600             : #define __pyx_n_s_pack __pyx_mstate_global->__pyx_n_s_pack
    4601             : #define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
    4602             : #define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
    4603             : #define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum
    4604             : #define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result
    4605             : #define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
    4606             : #define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type
    4607             : #define __pyx_n_s_pyx_unpickle_Enum __pyx_mstate_global->__pyx_n_s_pyx_unpickle_Enum
    4608             : #define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
    4609             : #define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
    4610             : #define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
    4611             : #define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
    4612             : #define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
    4613             : #define __pyx_n_s_register __pyx_mstate_global->__pyx_n_s_register
    4614             : #define __pyx_n_s_s __pyx_mstate_global->__pyx_n_s_s
    4615             : #define __pyx_n_s_scipy_signal__sosfilt __pyx_mstate_global->__pyx_n_s_scipy_signal__sosfilt
    4616             : #define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
    4617             : #define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
    4618             : #define __pyx_n_s_shape __pyx_mstate_global->__pyx_n_s_shape
    4619             : #define __pyx_n_s_signatures __pyx_mstate_global->__pyx_n_s_signatures
    4620             : #define __pyx_n_s_size __pyx_mstate_global->__pyx_n_s_size
    4621             : #define __pyx_n_s_sos __pyx_mstate_global->__pyx_n_s_sos
    4622             : #define __pyx_n_s_sosfilt __pyx_mstate_global->__pyx_n_s_sosfilt
    4623             : #define __pyx_n_s_sosfilt_object __pyx_mstate_global->__pyx_n_s_sosfilt_object
    4624             : #define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
    4625             : #define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split
    4626             : #define __pyx_n_s_start __pyx_mstate_global->__pyx_n_s_start
    4627             : #define __pyx_n_s_step __pyx_mstate_global->__pyx_n_s_step
    4628             : #define __pyx_n_s_stop __pyx_mstate_global->__pyx_n_s_stop
    4629             : #define __pyx_kp_s_strided_and_direct __pyx_mstate_global->__pyx_kp_s_strided_and_direct
    4630             : #define __pyx_kp_s_strided_and_direct_or_indirect __pyx_mstate_global->__pyx_kp_s_strided_and_direct_or_indirect
    4631             : #define __pyx_kp_s_strided_and_indirect __pyx_mstate_global->__pyx_kp_s_strided_and_indirect
    4632             : #define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
    4633             : #define __pyx_n_s_strip __pyx_mstate_global->__pyx_n_s_strip
    4634             : #define __pyx_n_s_struct __pyx_mstate_global->__pyx_n_s_struct
    4635             : #define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
    4636             : #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
    4637             : #define __pyx_kp_s_unable_to_allocate_array_data __pyx_mstate_global->__pyx_kp_s_unable_to_allocate_array_data
    4638             : #define __pyx_kp_s_unable_to_allocate_shape_and_str __pyx_mstate_global->__pyx_kp_s_unable_to_allocate_shape_and_str
    4639             : #define __pyx_n_s_unpack __pyx_mstate_global->__pyx_n_s_unpack
    4640             : #define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
    4641             : #define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
    4642             : #define __pyx_n_s_version_info __pyx_mstate_global->__pyx_n_s_version_info
    4643             : #define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x
    4644             : #define __pyx_n_s_x_n __pyx_mstate_global->__pyx_n_s_x_n
    4645             : #define __pyx_n_s_xrange __pyx_mstate_global->__pyx_n_s_xrange
    4646             : #define __pyx_n_s_zi __pyx_mstate_global->__pyx_n_s_zi
    4647             : #define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
    4648             : #define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
    4649             : #define __pyx_int_3 __pyx_mstate_global->__pyx_int_3
    4650             : #define __pyx_int_112105877 __pyx_mstate_global->__pyx_int_112105877
    4651             : #define __pyx_int_136983863 __pyx_mstate_global->__pyx_int_136983863
    4652             : #define __pyx_int_184977713 __pyx_mstate_global->__pyx_int_184977713
    4653             : #define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
    4654             : #define __pyx_slice__5 __pyx_mstate_global->__pyx_slice__5
    4655             : #define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
    4656             : #define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
    4657             : #define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
    4658             : #define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10
    4659             : #define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
    4660             : #define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
    4661             : #define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15
    4662             : #define __pyx_tuple__16 __pyx_mstate_global->__pyx_tuple__16
    4663             : #define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17
    4664             : #define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
    4665             : #define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19
    4666             : #define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20
    4667             : #define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
    4668             : #define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22
    4669             : #define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
    4670             : #define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24
    4671             : #define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
    4672             : #define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28
    4673             : #define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25
    4674             : #define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27
    4675             : #define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
    4676             : /* #### Code section: module_code ### */
    4677             : 
    4678             : /* "View.MemoryView":131
    4679             :  *         cdef bint dtype_is_object
    4680             :  * 
    4681             :  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
    4682             :  *                   mode="c", bint allocate_buffer=True):
    4683             :  * 
    4684             :  */
    4685             : 
    4686             : /* Python wrapper */
    4687             : static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    4688           0 : static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
    4689           0 :   PyObject *__pyx_v_shape = 0;
    4690           0 :   Py_ssize_t __pyx_v_itemsize;
    4691           0 :   PyObject *__pyx_v_format = 0;
    4692           0 :   PyObject *__pyx_v_mode = 0;
    4693           0 :   int __pyx_v_allocate_buffer;
    4694           0 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    4695           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    4696           0 :   PyObject* values[5] = {0,0,0,0,0};
    4697           0 :   int __pyx_lineno = 0;
    4698           0 :   const char *__pyx_filename = NULL;
    4699           0 :   int __pyx_clineno = 0;
    4700           0 :   int __pyx_r;
    4701             :   __Pyx_RefNannyDeclarations
    4702           0 :   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
    4703             :   #if CYTHON_ASSUME_SAFE_MACROS
    4704           0 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    4705             :   #else
    4706             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
    4707             :   #endif
    4708           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    4709             :   {
    4710           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0};
    4711           0 :     values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_n_s_c));
    4712           0 :     if (__pyx_kwds) {
    4713           0 :       Py_ssize_t kw_args;
    4714           0 :       switch (__pyx_nargs) {
    4715           0 :         case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
    4716           0 :         CYTHON_FALLTHROUGH;
    4717           0 :         case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    4718           0 :         CYTHON_FALLTHROUGH;
    4719           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    4720           0 :         CYTHON_FALLTHROUGH;
    4721           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    4722           0 :         CYTHON_FALLTHROUGH;
    4723           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    4724           0 :         CYTHON_FALLTHROUGH;
    4725           0 :         case  0: break;
    4726           0 :         default: goto __pyx_L5_argtuple_error;
    4727             :       }
    4728           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
    4729           0 :       switch (__pyx_nargs) {
    4730           0 :         case  0:
    4731           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shape)) != 0)) {
    4732           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
    4733           0 :           kw_args--;
    4734             :         }
    4735           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4736           0 :         else goto __pyx_L5_argtuple_error;
    4737           0 :         CYTHON_FALLTHROUGH;
    4738             :         case  1:
    4739           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_itemsize)) != 0)) {
    4740           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
    4741           0 :           kw_args--;
    4742             :         }
    4743           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4744             :         else {
    4745           0 :           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(1, 131, __pyx_L3_error)
    4746             :         }
    4747           0 :         CYTHON_FALLTHROUGH;
    4748             :         case  2:
    4749           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_format)) != 0)) {
    4750           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
    4751           0 :           kw_args--;
    4752             :         }
    4753           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4754             :         else {
    4755           0 :           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(1, 131, __pyx_L3_error)
    4756             :         }
    4757           0 :         CYTHON_FALLTHROUGH;
    4758             :         case  3:
    4759           0 :         if (kw_args > 0) {
    4760           0 :           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mode);
    4761           0 :           if (value) { values[3] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
    4762           0 :           else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4763             :         }
    4764           0 :         CYTHON_FALLTHROUGH;
    4765             :         case  4:
    4766           0 :         if (kw_args > 0) {
    4767           0 :           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_allocate_buffer);
    4768           0 :           if (value) { values[4] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
    4769           0 :           else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4770             :         }
    4771             :       }
    4772           0 :       if (unlikely(kw_args > 0)) {
    4773           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
    4774           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(1, 131, __pyx_L3_error)
    4775             :       }
    4776             :     } else {
    4777           0 :       switch (__pyx_nargs) {
    4778           0 :         case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
    4779           0 :         CYTHON_FALLTHROUGH;
    4780           0 :         case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    4781           0 :         CYTHON_FALLTHROUGH;
    4782           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    4783           0 :         values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    4784           0 :         values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    4785           0 :         break;
    4786           0 :         default: goto __pyx_L5_argtuple_error;
    4787             :       }
    4788             :     }
    4789           0 :     __pyx_v_shape = ((PyObject*)values[0]);
    4790           0 :     __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
    4791           0 :     __pyx_v_format = values[2];
    4792           0 :     __pyx_v_mode = values[3];
    4793           0 :     if (values[4]) {
    4794           0 :       __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 132, __pyx_L3_error)
    4795             :     } else {
    4796             : 
    4797             :       /* "View.MemoryView":132
    4798             :  * 
    4799             :  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,
    4800             :  *                   mode="c", bint allocate_buffer=True):             # <<<<<<<<<<<<<<
    4801             :  * 
    4802             :  *         cdef int idx
    4803             :  */
    4804             :       __pyx_v_allocate_buffer = ((int)1);
    4805             :     }
    4806             :   }
    4807           0 :   goto __pyx_L6_skip;
    4808           0 :   __pyx_L5_argtuple_error:;
    4809           0 :   __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, __pyx_nargs); __PYX_ERR(1, 131, __pyx_L3_error)
    4810           0 :   __pyx_L6_skip:;
    4811           0 :   goto __pyx_L4_argument_unpacking_done;
    4812           0 :   __pyx_L3_error:;
    4813             :   {
    4814           0 :     Py_ssize_t __pyx_temp;
    4815           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    4816             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    4817             :     }
    4818             :   }
    4819           0 :   __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    4820           0 :   __Pyx_RefNannyFinishContext();
    4821           0 :   return -1;
    4822           0 :   __pyx_L4_argument_unpacking_done:;
    4823           0 :   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(1, 131, __pyx_L1_error)
    4824           0 :   if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) {
    4825           0 :     PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(1, 131, __pyx_L1_error)
    4826             :   }
    4827           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer);
    4828             : 
    4829             :   /* "View.MemoryView":131
    4830             :  *         cdef bint dtype_is_object
    4831             :  * 
    4832             :  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
    4833             :  *                   mode="c", bint allocate_buffer=True):
    4834             :  * 
    4835             :  */
    4836             : 
    4837             :   /* function exit code */
    4838           0 :   goto __pyx_L0;
    4839             :   __pyx_L1_error:;
    4840             :   __pyx_r = -1;
    4841           0 :   __pyx_L0:;
    4842             :   {
    4843           0 :     Py_ssize_t __pyx_temp;
    4844           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    4845             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    4846             :     }
    4847             :   }
    4848             :   __Pyx_RefNannyFinishContext();
    4849             :   return __pyx_r;
    4850             : }
    4851             : 
    4852           0 : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) {
    4853           0 :   int __pyx_v_idx;
    4854           0 :   Py_ssize_t __pyx_v_dim;
    4855           0 :   char __pyx_v_order;
    4856           0 :   int __pyx_r;
    4857             :   __Pyx_RefNannyDeclarations
    4858           0 :   Py_ssize_t __pyx_t_1;
    4859           0 :   int __pyx_t_2;
    4860           0 :   int __pyx_t_3;
    4861           0 :   PyObject *__pyx_t_4 = NULL;
    4862           0 :   PyObject *__pyx_t_5 = NULL;
    4863           0 :   PyObject *__pyx_t_6 = NULL;
    4864           0 :   unsigned int __pyx_t_7;
    4865           0 :   char *__pyx_t_8;
    4866           0 :   int __pyx_t_9;
    4867           0 :   Py_ssize_t __pyx_t_10;
    4868           0 :   Py_UCS4 __pyx_t_11;
    4869           0 :   int __pyx_lineno = 0;
    4870           0 :   const char *__pyx_filename = NULL;
    4871           0 :   int __pyx_clineno = 0;
    4872           0 :   __Pyx_RefNannySetupContext("__cinit__", 0);
    4873           0 :   __Pyx_INCREF(__pyx_v_format);
    4874             : 
    4875             :   /* "View.MemoryView":137
    4876             :  *         cdef Py_ssize_t dim
    4877             :  * 
    4878             :  *         self.ndim = <int> len(shape)             # <<<<<<<<<<<<<<
    4879             :  *         self.itemsize = itemsize
    4880             :  * 
    4881             :  */
    4882           0 :   if (unlikely(__pyx_v_shape == Py_None)) {
    4883           0 :     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    4884           0 :     __PYX_ERR(1, 137, __pyx_L1_error)
    4885             :   }
    4886           0 :   __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 137, __pyx_L1_error)
    4887           0 :   __pyx_v_self->ndim = ((int)__pyx_t_1);
    4888             : 
    4889             :   /* "View.MemoryView":138
    4890             :  * 
    4891             :  *         self.ndim = <int> len(shape)
    4892             :  *         self.itemsize = itemsize             # <<<<<<<<<<<<<<
    4893             :  * 
    4894             :  *         if not self.ndim:
    4895             :  */
    4896           0 :   __pyx_v_self->itemsize = __pyx_v_itemsize;
    4897             : 
    4898             :   /* "View.MemoryView":140
    4899             :  *         self.itemsize = itemsize
    4900             :  * 
    4901             :  *         if not self.ndim:             # <<<<<<<<<<<<<<
    4902             :  *             raise ValueError, "Empty shape tuple for cython.array"
    4903             :  * 
    4904             :  */
    4905           0 :   __pyx_t_2 = (!(__pyx_v_self->ndim != 0));
    4906           0 :   if (unlikely(__pyx_t_2)) {
    4907             : 
    4908             :     /* "View.MemoryView":141
    4909             :  * 
    4910             :  *         if not self.ndim:
    4911             :  *             raise ValueError, "Empty shape tuple for cython.array"             # <<<<<<<<<<<<<<
    4912             :  * 
    4913             :  *         if itemsize <= 0:
    4914             :  */
    4915           0 :     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Empty_shape_tuple_for_cython_arr, 0, 0);
    4916           0 :     __PYX_ERR(1, 141, __pyx_L1_error)
    4917             : 
    4918             :     /* "View.MemoryView":140
    4919             :  *         self.itemsize = itemsize
    4920             :  * 
    4921             :  *         if not self.ndim:             # <<<<<<<<<<<<<<
    4922             :  *             raise ValueError, "Empty shape tuple for cython.array"
    4923             :  * 
    4924             :  */
    4925             :   }
    4926             : 
    4927             :   /* "View.MemoryView":143
    4928             :  *             raise ValueError, "Empty shape tuple for cython.array"
    4929             :  * 
    4930             :  *         if itemsize <= 0:             # <<<<<<<<<<<<<<
    4931             :  *             raise ValueError, "itemsize <= 0 for cython.array"
    4932             :  * 
    4933             :  */
    4934           0 :   __pyx_t_2 = (__pyx_v_itemsize <= 0);
    4935           0 :   if (unlikely(__pyx_t_2)) {
    4936             : 
    4937             :     /* "View.MemoryView":144
    4938             :  * 
    4939             :  *         if itemsize <= 0:
    4940             :  *             raise ValueError, "itemsize <= 0 for cython.array"             # <<<<<<<<<<<<<<
    4941             :  * 
    4942             :  *         if not isinstance(format, bytes):
    4943             :  */
    4944           0 :     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_itemsize_0_for_cython_array, 0, 0);
    4945           0 :     __PYX_ERR(1, 144, __pyx_L1_error)
    4946             : 
    4947             :     /* "View.MemoryView":143
    4948             :  *             raise ValueError, "Empty shape tuple for cython.array"
    4949             :  * 
    4950             :  *         if itemsize <= 0:             # <<<<<<<<<<<<<<
    4951             :  *             raise ValueError, "itemsize <= 0 for cython.array"
    4952             :  * 
    4953             :  */
    4954             :   }
    4955             : 
    4956             :   /* "View.MemoryView":146
    4957             :  *             raise ValueError, "itemsize <= 0 for cython.array"
    4958             :  * 
    4959             :  *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
    4960             :  *             format = format.encode('ASCII')
    4961             :  *         self._format = format  # keep a reference to the byte string
    4962             :  */
    4963           0 :   __pyx_t_2 = PyBytes_Check(__pyx_v_format); 
    4964           0 :   __pyx_t_3 = (!__pyx_t_2);
    4965           0 :   if (__pyx_t_3) {
    4966             : 
    4967             :     /* "View.MemoryView":147
    4968             :  * 
    4969             :  *         if not isinstance(format, bytes):
    4970             :  *             format = format.encode('ASCII')             # <<<<<<<<<<<<<<
    4971             :  *         self._format = format  # keep a reference to the byte string
    4972             :  *         self.format = self._format
    4973             :  */
    4974           0 :     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
    4975           0 :     __Pyx_GOTREF(__pyx_t_5);
    4976           0 :     __pyx_t_6 = NULL;
    4977           0 :     __pyx_t_7 = 0;
    4978             :     #if CYTHON_UNPACK_METHODS
    4979           0 :     if (likely(PyMethod_Check(__pyx_t_5))) {
    4980           0 :       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    4981           0 :       if (likely(__pyx_t_6)) {
    4982           0 :         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
    4983           0 :         __Pyx_INCREF(__pyx_t_6);
    4984           0 :         __Pyx_INCREF(function);
    4985           0 :         __Pyx_DECREF_SET(__pyx_t_5, function);
    4986             :         __pyx_t_7 = 1;
    4987             :       }
    4988             :     }
    4989             :     #endif
    4990             :     {
    4991           0 :       PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_n_s_ASCII};
    4992           0 :       __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    4993           0 :       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    4994           0 :       if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 147, __pyx_L1_error)
    4995           0 :       __Pyx_GOTREF(__pyx_t_4);
    4996           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    4997             :     }
    4998           0 :     __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_4);
    4999             :     __pyx_t_4 = 0;
    5000             : 
    5001             :     /* "View.MemoryView":146
    5002             :  *             raise ValueError, "itemsize <= 0 for cython.array"
    5003             :  * 
    5004             :  *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
    5005             :  *             format = format.encode('ASCII')
    5006             :  *         self._format = format  # keep a reference to the byte string
    5007             :  */
    5008             :   }
    5009             : 
    5010             :   /* "View.MemoryView":148
    5011             :  *         if not isinstance(format, bytes):
    5012             :  *             format = format.encode('ASCII')
    5013             :  *         self._format = format  # keep a reference to the byte string             # <<<<<<<<<<<<<<
    5014             :  *         self.format = self._format
    5015             :  * 
    5016             :  */
    5017           0 :   if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_format))) __PYX_ERR(1, 148, __pyx_L1_error)
    5018           0 :   __pyx_t_4 = __pyx_v_format;
    5019           0 :   __Pyx_INCREF(__pyx_t_4);
    5020           0 :   __Pyx_GIVEREF(__pyx_t_4);
    5021           0 :   __Pyx_GOTREF(__pyx_v_self->_format);
    5022           0 :   __Pyx_DECREF(__pyx_v_self->_format);
    5023           0 :   __pyx_v_self->_format = ((PyObject*)__pyx_t_4);
    5024           0 :   __pyx_t_4 = 0;
    5025             : 
    5026             :   /* "View.MemoryView":149
    5027             :  *             format = format.encode('ASCII')
    5028             :  *         self._format = format  # keep a reference to the byte string
    5029             :  *         self.format = self._format             # <<<<<<<<<<<<<<
    5030             :  * 
    5031             :  * 
    5032             :  */
    5033           0 :   if (unlikely(__pyx_v_self->_format == Py_None)) {
    5034           0 :     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    5035           0 :     __PYX_ERR(1, 149, __pyx_L1_error)
    5036             :   }
    5037           0 :   __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(1, 149, __pyx_L1_error)
    5038           0 :   __pyx_v_self->format = __pyx_t_8;
    5039             : 
    5040             :   /* "View.MemoryView":152
    5041             :  * 
    5042             :  * 
    5043             :  *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)             # <<<<<<<<<<<<<<
    5044             :  *         self._strides = self._shape + self.ndim
    5045             :  * 
    5046             :  */
    5047           0 :   __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2)));
    5048             : 
    5049             :   /* "View.MemoryView":153
    5050             :  * 
    5051             :  *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)
    5052             :  *         self._strides = self._shape + self.ndim             # <<<<<<<<<<<<<<
    5053             :  * 
    5054             :  *         if not self._shape:
    5055             :  */
    5056           0 :   __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim);
    5057             : 
    5058             :   /* "View.MemoryView":155
    5059             :  *         self._strides = self._shape + self.ndim
    5060             :  * 
    5061             :  *         if not self._shape:             # <<<<<<<<<<<<<<
    5062             :  *             raise MemoryError, "unable to allocate shape and strides."
    5063             :  * 
    5064             :  */
    5065           0 :   __pyx_t_3 = (!(__pyx_v_self->_shape != 0));
    5066           0 :   if (unlikely(__pyx_t_3)) {
    5067             : 
    5068             :     /* "View.MemoryView":156
    5069             :  * 
    5070             :  *         if not self._shape:
    5071             :  *             raise MemoryError, "unable to allocate shape and strides."             # <<<<<<<<<<<<<<
    5072             :  * 
    5073             :  * 
    5074             :  */
    5075           0 :     __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_kp_s_unable_to_allocate_shape_and_str, 0, 0);
    5076           0 :     __PYX_ERR(1, 156, __pyx_L1_error)
    5077             : 
    5078             :     /* "View.MemoryView":155
    5079             :  *         self._strides = self._shape + self.ndim
    5080             :  * 
    5081             :  *         if not self._shape:             # <<<<<<<<<<<<<<
    5082             :  *             raise MemoryError, "unable to allocate shape and strides."
    5083             :  * 
    5084             :  */
    5085             :   }
    5086             : 
    5087             :   /* "View.MemoryView":159
    5088             :  * 
    5089             :  * 
    5090             :  *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
    5091             :  *             if dim <= 0:
    5092             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."
    5093             :  */
    5094           0 :   __pyx_t_9 = 0;
    5095           0 :   __pyx_t_4 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_4);
    5096             :   __pyx_t_1 = 0;
    5097           0 :   for (;;) {
    5098           0 :     {
    5099           0 :       Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
    5100             :       #if !CYTHON_ASSUME_SAFE_MACROS
    5101             :       if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 159, __pyx_L1_error)
    5102             :       #endif
    5103           0 :       if (__pyx_t_1 >= __pyx_temp) break;
    5104             :     }
    5105             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    5106           0 :     __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(1, 159, __pyx_L1_error)
    5107             :     #else
    5108             :     __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 159, __pyx_L1_error)
    5109             :     __Pyx_GOTREF(__pyx_t_5);
    5110             :     #endif
    5111           0 :     __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 159, __pyx_L1_error)
    5112           0 :     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    5113           0 :     __pyx_v_dim = __pyx_t_10;
    5114           0 :     __pyx_v_idx = __pyx_t_9;
    5115           0 :     __pyx_t_9 = (__pyx_t_9 + 1);
    5116             : 
    5117             :     /* "View.MemoryView":160
    5118             :  * 
    5119             :  *         for idx, dim in enumerate(shape):
    5120             :  *             if dim <= 0:             # <<<<<<<<<<<<<<
    5121             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."
    5122             :  *             self._shape[idx] = dim
    5123             :  */
    5124           0 :     __pyx_t_3 = (__pyx_v_dim <= 0);
    5125           0 :     if (unlikely(__pyx_t_3)) {
    5126             : 
    5127             :       /* "View.MemoryView":161
    5128             :  *         for idx, dim in enumerate(shape):
    5129             :  *             if dim <= 0:
    5130             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."             # <<<<<<<<<<<<<<
    5131             :  *             self._shape[idx] = dim
    5132             :  * 
    5133             :  */
    5134           0 :       __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 161, __pyx_L1_error)
    5135           0 :       __Pyx_GOTREF(__pyx_t_5);
    5136           0 :       __pyx_t_10 = 0;
    5137           0 :       __pyx_t_11 = 127;
    5138           0 :       __Pyx_INCREF(__pyx_kp_u_Invalid_shape_in_axis);
    5139           0 :       __pyx_t_10 += 22;
    5140           0 :       __Pyx_GIVEREF(__pyx_kp_u_Invalid_shape_in_axis);
    5141           0 :       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Invalid_shape_in_axis);
    5142           0 :       __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error)
    5143           0 :       __Pyx_GOTREF(__pyx_t_6);
    5144           0 :       __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    5145           0 :       __Pyx_GIVEREF(__pyx_t_6);
    5146           0 :       PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
    5147           0 :       __pyx_t_6 = 0;
    5148           0 :       __Pyx_INCREF(__pyx_kp_u_);
    5149           0 :       __pyx_t_10 += 2;
    5150           0 :       __Pyx_GIVEREF(__pyx_kp_u_);
    5151           0 :       PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_);
    5152           0 :       __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error)
    5153           0 :       __Pyx_GOTREF(__pyx_t_6);
    5154           0 :       __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    5155           0 :       __Pyx_GIVEREF(__pyx_t_6);
    5156           0 :       PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
    5157           0 :       __pyx_t_6 = 0;
    5158           0 :       __Pyx_INCREF(__pyx_kp_u__2);
    5159           0 :       __pyx_t_10 += 1;
    5160           0 :       __Pyx_GIVEREF(__pyx_kp_u__2);
    5161           0 :       PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u__2);
    5162           0 :       __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error)
    5163           0 :       __Pyx_GOTREF(__pyx_t_6);
    5164           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    5165           0 :       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_6, 0, 0);
    5166           0 :       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    5167           0 :       __PYX_ERR(1, 161, __pyx_L1_error)
    5168             : 
    5169             :       /* "View.MemoryView":160
    5170             :  * 
    5171             :  *         for idx, dim in enumerate(shape):
    5172             :  *             if dim <= 0:             # <<<<<<<<<<<<<<
    5173             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."
    5174             :  *             self._shape[idx] = dim
    5175             :  */
    5176             :     }
    5177             : 
    5178             :     /* "View.MemoryView":162
    5179             :  *             if dim <= 0:
    5180             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."
    5181             :  *             self._shape[idx] = dim             # <<<<<<<<<<<<<<
    5182             :  * 
    5183             :  *         cdef char order
    5184             :  */
    5185           0 :     (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim;
    5186             : 
    5187             :     /* "View.MemoryView":159
    5188             :  * 
    5189             :  * 
    5190             :  *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
    5191             :  *             if dim <= 0:
    5192             :  *                 raise ValueError, f"Invalid shape in axis {idx}: {dim}."
    5193             :  */
    5194             :   }
    5195           0 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    5196             : 
    5197             :   /* "View.MemoryView":165
    5198             :  * 
    5199             :  *         cdef char order
    5200             :  *         if mode == 'c':             # <<<<<<<<<<<<<<
    5201             :  *             order = b'C'
    5202             :  *             self.mode = u'c'
    5203             :  */
    5204           0 :   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 165, __pyx_L1_error)
    5205           0 :   if (__pyx_t_3) {
    5206             : 
    5207             :     /* "View.MemoryView":166
    5208             :  *         cdef char order
    5209             :  *         if mode == 'c':
    5210             :  *             order = b'C'             # <<<<<<<<<<<<<<
    5211             :  *             self.mode = u'c'
    5212             :  *         elif mode == 'fortran':
    5213             :  */
    5214           0 :     __pyx_v_order = 'C';
    5215             : 
    5216             :     /* "View.MemoryView":167
    5217             :  *         if mode == 'c':
    5218             :  *             order = b'C'
    5219             :  *             self.mode = u'c'             # <<<<<<<<<<<<<<
    5220             :  *         elif mode == 'fortran':
    5221             :  *             order = b'F'
    5222             :  */
    5223           0 :     __Pyx_INCREF(__pyx_n_u_c);
    5224           0 :     __Pyx_GIVEREF(__pyx_n_u_c);
    5225           0 :     __Pyx_GOTREF(__pyx_v_self->mode);
    5226           0 :     __Pyx_DECREF(__pyx_v_self->mode);
    5227           0 :     __pyx_v_self->mode = __pyx_n_u_c;
    5228             : 
    5229             :     /* "View.MemoryView":165
    5230             :  * 
    5231             :  *         cdef char order
    5232             :  *         if mode == 'c':             # <<<<<<<<<<<<<<
    5233             :  *             order = b'C'
    5234             :  *             self.mode = u'c'
    5235             :  */
    5236           0 :     goto __pyx_L11;
    5237             :   }
    5238             : 
    5239             :   /* "View.MemoryView":168
    5240             :  *             order = b'C'
    5241             :  *             self.mode = u'c'
    5242             :  *         elif mode == 'fortran':             # <<<<<<<<<<<<<<
    5243             :  *             order = b'F'
    5244             :  *             self.mode = u'fortran'
    5245             :  */
    5246           0 :   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 168, __pyx_L1_error)
    5247           0 :   if (likely(__pyx_t_3)) {
    5248             : 
    5249             :     /* "View.MemoryView":169
    5250             :  *             self.mode = u'c'
    5251             :  *         elif mode == 'fortran':
    5252             :  *             order = b'F'             # <<<<<<<<<<<<<<
    5253             :  *             self.mode = u'fortran'
    5254             :  *         else:
    5255             :  */
    5256           0 :     __pyx_v_order = 'F';
    5257             : 
    5258             :     /* "View.MemoryView":170
    5259             :  *         elif mode == 'fortran':
    5260             :  *             order = b'F'
    5261             :  *             self.mode = u'fortran'             # <<<<<<<<<<<<<<
    5262             :  *         else:
    5263             :  *             raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}"
    5264             :  */
    5265           0 :     __Pyx_INCREF(__pyx_n_u_fortran);
    5266           0 :     __Pyx_GIVEREF(__pyx_n_u_fortran);
    5267           0 :     __Pyx_GOTREF(__pyx_v_self->mode);
    5268           0 :     __Pyx_DECREF(__pyx_v_self->mode);
    5269           0 :     __pyx_v_self->mode = __pyx_n_u_fortran;
    5270             : 
    5271             :     /* "View.MemoryView":168
    5272             :  *             order = b'C'
    5273             :  *             self.mode = u'c'
    5274             :  *         elif mode == 'fortran':             # <<<<<<<<<<<<<<
    5275             :  *             order = b'F'
    5276             :  *             self.mode = u'fortran'
    5277             :  */
    5278           0 :     goto __pyx_L11;
    5279             :   }
    5280             : 
    5281             :   /* "View.MemoryView":172
    5282             :  *             self.mode = u'fortran'
    5283             :  *         else:
    5284             :  *             raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}"             # <<<<<<<<<<<<<<
    5285             :  * 
    5286             :  *         self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order)
    5287             :  */
    5288             :   /*else*/ {
    5289           0 :     __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_mode, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 172, __pyx_L1_error)
    5290           0 :     __Pyx_GOTREF(__pyx_t_4);
    5291           0 :     __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 172, __pyx_L1_error)
    5292           0 :     __Pyx_GOTREF(__pyx_t_6);
    5293           0 :     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    5294           0 :     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_6, 0, 0);
    5295           0 :     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    5296           0 :     __PYX_ERR(1, 172, __pyx_L1_error)
    5297             :   }
    5298           0 :   __pyx_L11:;
    5299             : 
    5300             :   /* "View.MemoryView":174
    5301             :  *             raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}"
    5302             :  * 
    5303             :  *         self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order)             # <<<<<<<<<<<<<<
    5304             :  * 
    5305             :  *         self.free_data = allocate_buffer
    5306             :  */
    5307           0 :   __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order);
    5308             : 
    5309             :   /* "View.MemoryView":176
    5310             :  *         self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order)
    5311             :  * 
    5312             :  *         self.free_data = allocate_buffer             # <<<<<<<<<<<<<<
    5313             :  *         self.dtype_is_object = format == b'O'
    5314             :  * 
    5315             :  */
    5316           0 :   __pyx_v_self->free_data = __pyx_v_allocate_buffer;
    5317             : 
    5318             :   /* "View.MemoryView":177
    5319             :  * 
    5320             :  *         self.free_data = allocate_buffer
    5321             :  *         self.dtype_is_object = format == b'O'             # <<<<<<<<<<<<<<
    5322             :  * 
    5323             :  *         if allocate_buffer:
    5324             :  */
    5325           0 :   __pyx_t_6 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 177, __pyx_L1_error)
    5326           0 :   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 177, __pyx_L1_error)
    5327           0 :   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    5328           0 :   __pyx_v_self->dtype_is_object = __pyx_t_3;
    5329             : 
    5330             :   /* "View.MemoryView":179
    5331             :  *         self.dtype_is_object = format == b'O'
    5332             :  * 
    5333             :  *         if allocate_buffer:             # <<<<<<<<<<<<<<
    5334             :  *             _allocate_buffer(self)
    5335             :  * 
    5336             :  */
    5337           0 :   if (__pyx_v_allocate_buffer) {
    5338             : 
    5339             :     /* "View.MemoryView":180
    5340             :  * 
    5341             :  *         if allocate_buffer:
    5342             :  *             _allocate_buffer(self)             # <<<<<<<<<<<<<<
    5343             :  * 
    5344             :  *     @cname('getbuffer')
    5345             :  */
    5346           0 :     __pyx_t_9 = __pyx_array_allocate_buffer(__pyx_v_self); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 180, __pyx_L1_error)
    5347             : 
    5348             :     /* "View.MemoryView":179
    5349             :  *         self.dtype_is_object = format == b'O'
    5350             :  * 
    5351             :  *         if allocate_buffer:             # <<<<<<<<<<<<<<
    5352             :  *             _allocate_buffer(self)
    5353             :  * 
    5354             :  */
    5355             :   }
    5356             : 
    5357             :   /* "View.MemoryView":131
    5358             :  *         cdef bint dtype_is_object
    5359             :  * 
    5360             :  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
    5361             :  *                   mode="c", bint allocate_buffer=True):
    5362             :  * 
    5363             :  */
    5364             : 
    5365             :   /* function exit code */
    5366           0 :   __pyx_r = 0;
    5367           0 :   goto __pyx_L0;
    5368           0 :   __pyx_L1_error:;
    5369           0 :   __Pyx_XDECREF(__pyx_t_4);
    5370           0 :   __Pyx_XDECREF(__pyx_t_5);
    5371           0 :   __Pyx_XDECREF(__pyx_t_6);
    5372           0 :   __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    5373           0 :   __pyx_r = -1;
    5374           0 :   __pyx_L0:;
    5375           0 :   __Pyx_XDECREF(__pyx_v_format);
    5376           0 :   __Pyx_RefNannyFinishContext();
    5377           0 :   return __pyx_r;
    5378             : }
    5379             : 
    5380             : /* "View.MemoryView":182
    5381             :  *             _allocate_buffer(self)
    5382             :  * 
    5383             :  *     @cname('getbuffer')             # <<<<<<<<<<<<<<
    5384             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    5385             :  *         cdef int bufmode = -1
    5386             :  */
    5387             : 
    5388             : /* Python wrapper */
    5389             : CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
    5390           0 : CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
    5391           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    5392           0 :   int __pyx_r;
    5393             :   __Pyx_RefNannyDeclarations
    5394           0 :   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
    5395           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    5396           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
    5397             : 
    5398             :   /* function exit code */
    5399           0 :   __Pyx_RefNannyFinishContext();
    5400           0 :   return __pyx_r;
    5401             : }
    5402             : 
    5403           0 : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
    5404           0 :   int __pyx_v_bufmode;
    5405           0 :   int __pyx_r;
    5406             :   __Pyx_RefNannyDeclarations
    5407           0 :   int __pyx_t_1;
    5408           0 :   char *__pyx_t_2;
    5409           0 :   Py_ssize_t __pyx_t_3;
    5410           0 :   int __pyx_t_4;
    5411           0 :   Py_ssize_t *__pyx_t_5;
    5412           0 :   int __pyx_lineno = 0;
    5413           0 :   const char *__pyx_filename = NULL;
    5414           0 :   int __pyx_clineno = 0;
    5415           0 :   if (unlikely(__pyx_v_info == NULL)) {
    5416           0 :     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    5417           0 :     return -1;
    5418             :   }
    5419           0 :   __Pyx_RefNannySetupContext("__getbuffer__", 0);
    5420           0 :   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    5421           0 :   __Pyx_GIVEREF(__pyx_v_info->obj);
    5422             : 
    5423             :   /* "View.MemoryView":184
    5424             :  *     @cname('getbuffer')
    5425             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    5426             :  *         cdef int bufmode = -1             # <<<<<<<<<<<<<<
    5427             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):
    5428             :  *             if self.mode == u"c":
    5429             :  */
    5430           0 :   __pyx_v_bufmode = -1;
    5431             : 
    5432             :   /* "View.MemoryView":185
    5433             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    5434             :  *         cdef int bufmode = -1
    5435             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):             # <<<<<<<<<<<<<<
    5436             :  *             if self.mode == u"c":
    5437             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5438             :  */
    5439           0 :   __pyx_t_1 = ((__pyx_v_flags & ((PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS) | PyBUF_ANY_CONTIGUOUS)) != 0);
    5440           0 :   if (__pyx_t_1) {
    5441             : 
    5442             :     /* "View.MemoryView":186
    5443             :  *         cdef int bufmode = -1
    5444             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):
    5445             :  *             if self.mode == u"c":             # <<<<<<<<<<<<<<
    5446             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5447             :  *             elif self.mode == u"fortran":
    5448             :  */
    5449           0 :     __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 186, __pyx_L1_error)
    5450           0 :     if (__pyx_t_1) {
    5451             : 
    5452             :       /* "View.MemoryView":187
    5453             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):
    5454             :  *             if self.mode == u"c":
    5455             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
    5456             :  *             elif self.mode == u"fortran":
    5457             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5458             :  */
    5459           0 :       __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);
    5460             : 
    5461             :       /* "View.MemoryView":186
    5462             :  *         cdef int bufmode = -1
    5463             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):
    5464             :  *             if self.mode == u"c":             # <<<<<<<<<<<<<<
    5465             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5466             :  *             elif self.mode == u"fortran":
    5467             :  */
    5468           0 :       goto __pyx_L4;
    5469             :     }
    5470             : 
    5471             :     /* "View.MemoryView":188
    5472             :  *             if self.mode == u"c":
    5473             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5474             :  *             elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
    5475             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5476             :  *             if not (flags & bufmode):
    5477             :  */
    5478           0 :     __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 188, __pyx_L1_error)
    5479           0 :     if (__pyx_t_1) {
    5480             : 
    5481             :       /* "View.MemoryView":189
    5482             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5483             :  *             elif self.mode == u"fortran":
    5484             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
    5485             :  *             if not (flags & bufmode):
    5486             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."
    5487             :  */
    5488           0 :       __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);
    5489             : 
    5490             :       /* "View.MemoryView":188
    5491             :  *             if self.mode == u"c":
    5492             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5493             :  *             elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
    5494             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5495             :  *             if not (flags & bufmode):
    5496             :  */
    5497             :     }
    5498           0 :     __pyx_L4:;
    5499             : 
    5500             :     /* "View.MemoryView":190
    5501             :  *             elif self.mode == u"fortran":
    5502             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5503             :  *             if not (flags & bufmode):             # <<<<<<<<<<<<<<
    5504             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."
    5505             :  *         info.buf = self.data
    5506             :  */
    5507           0 :     __pyx_t_1 = (!((__pyx_v_flags & __pyx_v_bufmode) != 0));
    5508           0 :     if (unlikely(__pyx_t_1)) {
    5509             : 
    5510             :       /* "View.MemoryView":191
    5511             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5512             :  *             if not (flags & bufmode):
    5513             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."             # <<<<<<<<<<<<<<
    5514             :  *         info.buf = self.data
    5515             :  *         info.len = self.len
    5516             :  */
    5517           0 :       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Can_only_create_a_buffer_that_is, 0, 0);
    5518           0 :       __PYX_ERR(1, 191, __pyx_L1_error)
    5519             : 
    5520             :       /* "View.MemoryView":190
    5521             :  *             elif self.mode == u"fortran":
    5522             :  *                 bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5523             :  *             if not (flags & bufmode):             # <<<<<<<<<<<<<<
    5524             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."
    5525             :  *         info.buf = self.data
    5526             :  */
    5527             :     }
    5528             : 
    5529             :     /* "View.MemoryView":185
    5530             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    5531             :  *         cdef int bufmode = -1
    5532             :  *         if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS):             # <<<<<<<<<<<<<<
    5533             :  *             if self.mode == u"c":
    5534             :  *                 bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
    5535             :  */
    5536             :   }
    5537             : 
    5538             :   /* "View.MemoryView":192
    5539             :  *             if not (flags & bufmode):
    5540             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."
    5541             :  *         info.buf = self.data             # <<<<<<<<<<<<<<
    5542             :  *         info.len = self.len
    5543             :  * 
    5544             :  */
    5545           0 :   __pyx_t_2 = __pyx_v_self->data;
    5546           0 :   __pyx_v_info->buf = __pyx_t_2;
    5547             : 
    5548             :   /* "View.MemoryView":193
    5549             :  *                 raise ValueError, "Can only create a buffer that is contiguous in memory."
    5550             :  *         info.buf = self.data
    5551             :  *         info.len = self.len             # <<<<<<<<<<<<<<
    5552             :  * 
    5553             :  *         if flags & PyBUF_STRIDES:
    5554             :  */
    5555           0 :   __pyx_t_3 = __pyx_v_self->len;
    5556           0 :   __pyx_v_info->len = __pyx_t_3;
    5557             : 
    5558             :   /* "View.MemoryView":195
    5559             :  *         info.len = self.len
    5560             :  * 
    5561             :  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
    5562             :  *             info.ndim = self.ndim
    5563             :  *             info.shape = self._shape
    5564             :  */
    5565           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0);
    5566           0 :   if (__pyx_t_1) {
    5567             : 
    5568             :     /* "View.MemoryView":196
    5569             :  * 
    5570             :  *         if flags & PyBUF_STRIDES:
    5571             :  *             info.ndim = self.ndim             # <<<<<<<<<<<<<<
    5572             :  *             info.shape = self._shape
    5573             :  *             info.strides = self._strides
    5574             :  */
    5575           0 :     __pyx_t_4 = __pyx_v_self->ndim;
    5576           0 :     __pyx_v_info->ndim = __pyx_t_4;
    5577             : 
    5578             :     /* "View.MemoryView":197
    5579             :  *         if flags & PyBUF_STRIDES:
    5580             :  *             info.ndim = self.ndim
    5581             :  *             info.shape = self._shape             # <<<<<<<<<<<<<<
    5582             :  *             info.strides = self._strides
    5583             :  *         else:
    5584             :  */
    5585           0 :     __pyx_t_5 = __pyx_v_self->_shape;
    5586           0 :     __pyx_v_info->shape = __pyx_t_5;
    5587             : 
    5588             :     /* "View.MemoryView":198
    5589             :  *             info.ndim = self.ndim
    5590             :  *             info.shape = self._shape
    5591             :  *             info.strides = self._strides             # <<<<<<<<<<<<<<
    5592             :  *         else:
    5593             :  *             info.ndim = 1
    5594             :  */
    5595           0 :     __pyx_t_5 = __pyx_v_self->_strides;
    5596           0 :     __pyx_v_info->strides = __pyx_t_5;
    5597             : 
    5598             :     /* "View.MemoryView":195
    5599             :  *         info.len = self.len
    5600             :  * 
    5601             :  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
    5602             :  *             info.ndim = self.ndim
    5603             :  *             info.shape = self._shape
    5604             :  */
    5605           0 :     goto __pyx_L6;
    5606             :   }
    5607             : 
    5608             :   /* "View.MemoryView":200
    5609             :  *             info.strides = self._strides
    5610             :  *         else:
    5611             :  *             info.ndim = 1             # <<<<<<<<<<<<<<
    5612             :  *             info.shape = &self.len if flags & PyBUF_ND else NULL
    5613             :  *             info.strides = NULL
    5614             :  */
    5615             :   /*else*/ {
    5616           0 :     __pyx_v_info->ndim = 1;
    5617             : 
    5618             :     /* "View.MemoryView":201
    5619             :  *         else:
    5620             :  *             info.ndim = 1
    5621             :  *             info.shape = &self.len if flags & PyBUF_ND else NULL             # <<<<<<<<<<<<<<
    5622             :  *             info.strides = NULL
    5623             :  * 
    5624             :  */
    5625           0 :     __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0);
    5626           0 :     if (__pyx_t_1) {
    5627             :       __pyx_t_5 = (&__pyx_v_self->len);
    5628             :     } else {
    5629             :       __pyx_t_5 = NULL;
    5630             :     }
    5631           0 :     __pyx_v_info->shape = __pyx_t_5;
    5632             : 
    5633             :     /* "View.MemoryView":202
    5634             :  *             info.ndim = 1
    5635             :  *             info.shape = &self.len if flags & PyBUF_ND else NULL
    5636             :  *             info.strides = NULL             # <<<<<<<<<<<<<<
    5637             :  * 
    5638             :  *         info.suboffsets = NULL
    5639             :  */
    5640           0 :     __pyx_v_info->strides = NULL;
    5641             :   }
    5642           0 :   __pyx_L6:;
    5643             : 
    5644             :   /* "View.MemoryView":204
    5645             :  *             info.strides = NULL
    5646             :  * 
    5647             :  *         info.suboffsets = NULL             # <<<<<<<<<<<<<<
    5648             :  *         info.itemsize = self.itemsize
    5649             :  *         info.readonly = 0
    5650             :  */
    5651           0 :   __pyx_v_info->suboffsets = NULL;
    5652             : 
    5653             :   /* "View.MemoryView":205
    5654             :  * 
    5655             :  *         info.suboffsets = NULL
    5656             :  *         info.itemsize = self.itemsize             # <<<<<<<<<<<<<<
    5657             :  *         info.readonly = 0
    5658             :  *         info.format = self.format if flags & PyBUF_FORMAT else NULL
    5659             :  */
    5660           0 :   __pyx_t_3 = __pyx_v_self->itemsize;
    5661           0 :   __pyx_v_info->itemsize = __pyx_t_3;
    5662             : 
    5663             :   /* "View.MemoryView":206
    5664             :  *         info.suboffsets = NULL
    5665             :  *         info.itemsize = self.itemsize
    5666             :  *         info.readonly = 0             # <<<<<<<<<<<<<<
    5667             :  *         info.format = self.format if flags & PyBUF_FORMAT else NULL
    5668             :  *         info.obj = self
    5669             :  */
    5670           0 :   __pyx_v_info->readonly = 0;
    5671             : 
    5672             :   /* "View.MemoryView":207
    5673             :  *         info.itemsize = self.itemsize
    5674             :  *         info.readonly = 0
    5675             :  *         info.format = self.format if flags & PyBUF_FORMAT else NULL             # <<<<<<<<<<<<<<
    5676             :  *         info.obj = self
    5677             :  * 
    5678             :  */
    5679           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
    5680           0 :   if (__pyx_t_1) {
    5681           0 :     __pyx_t_2 = __pyx_v_self->format;
    5682             :   } else {
    5683             :     __pyx_t_2 = NULL;
    5684             :   }
    5685           0 :   __pyx_v_info->format = __pyx_t_2;
    5686             : 
    5687             :   /* "View.MemoryView":208
    5688             :  *         info.readonly = 0
    5689             :  *         info.format = self.format if flags & PyBUF_FORMAT else NULL
    5690             :  *         info.obj = self             # <<<<<<<<<<<<<<
    5691             :  * 
    5692             :  *     def __dealloc__(array self):
    5693             :  */
    5694           0 :   __Pyx_INCREF((PyObject *)__pyx_v_self);
    5695           0 :   __Pyx_GIVEREF((PyObject *)__pyx_v_self);
    5696           0 :   __Pyx_GOTREF(__pyx_v_info->obj);
    5697           0 :   __Pyx_DECREF(__pyx_v_info->obj);
    5698           0 :   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
    5699             : 
    5700             :   /* "View.MemoryView":182
    5701             :  *             _allocate_buffer(self)
    5702             :  * 
    5703             :  *     @cname('getbuffer')             # <<<<<<<<<<<<<<
    5704             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    5705             :  *         cdef int bufmode = -1
    5706             :  */
    5707             : 
    5708             :   /* function exit code */
    5709           0 :   __pyx_r = 0;
    5710           0 :   goto __pyx_L0;
    5711           0 :   __pyx_L1_error:;
    5712           0 :   __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    5713           0 :   __pyx_r = -1;
    5714           0 :   if (__pyx_v_info->obj != NULL) {
    5715           0 :     __Pyx_GOTREF(__pyx_v_info->obj);
    5716           0 :     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
    5717             :   }
    5718           0 :   goto __pyx_L2;
    5719           0 :   __pyx_L0:;
    5720           0 :   if (__pyx_v_info->obj == Py_None) {
    5721           0 :     __Pyx_GOTREF(__pyx_v_info->obj);
    5722           0 :     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
    5723             :   }
    5724           0 :   __pyx_L2:;
    5725             :   __Pyx_RefNannyFinishContext();
    5726             :   return __pyx_r;
    5727             : }
    5728             : 
    5729             : /* "View.MemoryView":210
    5730             :  *         info.obj = self
    5731             :  * 
    5732             :  *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
    5733             :  *         if self.callback_free_data != NULL:
    5734             :  *             self.callback_free_data(self.data)
    5735             :  */
    5736             : 
    5737             : /* Python wrapper */
    5738             : static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/
    5739           0 : static void __pyx_array___dealloc__(PyObject *__pyx_v_self) {
    5740           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    5741             :   __Pyx_RefNannyDeclarations
    5742           0 :   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
    5743           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    5744           0 :   __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self));
    5745             : 
    5746             :   /* function exit code */
    5747           0 :   __Pyx_RefNannyFinishContext();
    5748             : }
    5749             : 
    5750           0 : static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) {
    5751           0 :   int __pyx_t_1;
    5752           0 :   int __pyx_t_2;
    5753             : 
    5754             :   /* "View.MemoryView":211
    5755             :  * 
    5756             :  *     def __dealloc__(array self):
    5757             :  *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
    5758             :  *             self.callback_free_data(self.data)
    5759             :  *         elif self.free_data and self.data is not NULL:
    5760             :  */
    5761           0 :   __pyx_t_1 = (__pyx_v_self->callback_free_data != NULL);
    5762           0 :   if (__pyx_t_1) {
    5763             : 
    5764             :     /* "View.MemoryView":212
    5765             :  *     def __dealloc__(array self):
    5766             :  *         if self.callback_free_data != NULL:
    5767             :  *             self.callback_free_data(self.data)             # <<<<<<<<<<<<<<
    5768             :  *         elif self.free_data and self.data is not NULL:
    5769             :  *             if self.dtype_is_object:
    5770             :  */
    5771           0 :     __pyx_v_self->callback_free_data(__pyx_v_self->data);
    5772             : 
    5773             :     /* "View.MemoryView":211
    5774             :  * 
    5775             :  *     def __dealloc__(array self):
    5776             :  *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
    5777             :  *             self.callback_free_data(self.data)
    5778             :  *         elif self.free_data and self.data is not NULL:
    5779             :  */
    5780           0 :     goto __pyx_L3;
    5781             :   }
    5782             : 
    5783             :   /* "View.MemoryView":213
    5784             :  *         if self.callback_free_data != NULL:
    5785             :  *             self.callback_free_data(self.data)
    5786             :  *         elif self.free_data and self.data is not NULL:             # <<<<<<<<<<<<<<
    5787             :  *             if self.dtype_is_object:
    5788             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5789             :  */
    5790           0 :   if (__pyx_v_self->free_data) {
    5791           0 :   } else {
    5792           0 :     __pyx_t_1 = __pyx_v_self->free_data;
    5793           0 :     goto __pyx_L4_bool_binop_done;
    5794             :   }
    5795           0 :   __pyx_t_2 = (__pyx_v_self->data != NULL);
    5796           0 :   __pyx_t_1 = __pyx_t_2;
    5797           0 :   __pyx_L4_bool_binop_done:;
    5798           0 :   if (__pyx_t_1) {
    5799             : 
    5800             :     /* "View.MemoryView":214
    5801             :  *             self.callback_free_data(self.data)
    5802             :  *         elif self.free_data and self.data is not NULL:
    5803             :  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
    5804             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5805             :  *             free(self.data)
    5806             :  */
    5807           0 :     if (__pyx_v_self->dtype_is_object) {
    5808             : 
    5809             :       /* "View.MemoryView":215
    5810             :  *         elif self.free_data and self.data is not NULL:
    5811             :  *             if self.dtype_is_object:
    5812             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)             # <<<<<<<<<<<<<<
    5813             :  *             free(self.data)
    5814             :  *         PyObject_Free(self._shape)
    5815             :  */
    5816           0 :       __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0);
    5817             : 
    5818             :       /* "View.MemoryView":214
    5819             :  *             self.callback_free_data(self.data)
    5820             :  *         elif self.free_data and self.data is not NULL:
    5821             :  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
    5822             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5823             :  *             free(self.data)
    5824             :  */
    5825             :     }
    5826             : 
    5827             :     /* "View.MemoryView":216
    5828             :  *             if self.dtype_is_object:
    5829             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5830             :  *             free(self.data)             # <<<<<<<<<<<<<<
    5831             :  *         PyObject_Free(self._shape)
    5832             :  * 
    5833             :  */
    5834           0 :     free(__pyx_v_self->data);
    5835             : 
    5836             :     /* "View.MemoryView":213
    5837             :  *         if self.callback_free_data != NULL:
    5838             :  *             self.callback_free_data(self.data)
    5839             :  *         elif self.free_data and self.data is not NULL:             # <<<<<<<<<<<<<<
    5840             :  *             if self.dtype_is_object:
    5841             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5842             :  */
    5843             :   }
    5844           0 :   __pyx_L3:;
    5845             : 
    5846             :   /* "View.MemoryView":217
    5847             :  *                 refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False)
    5848             :  *             free(self.data)
    5849             :  *         PyObject_Free(self._shape)             # <<<<<<<<<<<<<<
    5850             :  * 
    5851             :  *     @property
    5852             :  */
    5853           0 :   PyObject_Free(__pyx_v_self->_shape);
    5854             : 
    5855             :   /* "View.MemoryView":210
    5856             :  *         info.obj = self
    5857             :  * 
    5858             :  *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
    5859             :  *         if self.callback_free_data != NULL:
    5860             :  *             self.callback_free_data(self.data)
    5861             :  */
    5862             : 
    5863             :   /* function exit code */
    5864           0 : }
    5865             : 
    5866             : /* "View.MemoryView":219
    5867             :  *         PyObject_Free(self._shape)
    5868             :  * 
    5869             :  *     @property             # <<<<<<<<<<<<<<
    5870             :  *     def memview(self):
    5871             :  *         return self.get_memview()
    5872             :  */
    5873             : 
    5874             : /* Python wrapper */
    5875             : static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/
    5876           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) {
    5877           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    5878           0 :   PyObject *__pyx_r = 0;
    5879             :   __Pyx_RefNannyDeclarations
    5880           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
    5881           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    5882           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self));
    5883             : 
    5884             :   /* function exit code */
    5885           0 :   __Pyx_RefNannyFinishContext();
    5886           0 :   return __pyx_r;
    5887             : }
    5888             : 
    5889           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) {
    5890           0 :   PyObject *__pyx_r = NULL;
    5891             :   __Pyx_RefNannyDeclarations
    5892           0 :   PyObject *__pyx_t_1 = NULL;
    5893           0 :   int __pyx_lineno = 0;
    5894           0 :   const char *__pyx_filename = NULL;
    5895           0 :   int __pyx_clineno = 0;
    5896           0 :   __Pyx_RefNannySetupContext("__get__", 1);
    5897             : 
    5898             :   /* "View.MemoryView":221
    5899             :  *     @property
    5900             :  *     def memview(self):
    5901             :  *         return self.get_memview()             # <<<<<<<<<<<<<<
    5902             :  * 
    5903             :  *     @cname('get_memview')
    5904             :  */
    5905           0 :   __Pyx_XDECREF(__pyx_r);
    5906           0 :   __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 221, __pyx_L1_error)
    5907           0 :   __Pyx_GOTREF(__pyx_t_1);
    5908           0 :   __pyx_r = __pyx_t_1;
    5909           0 :   __pyx_t_1 = 0;
    5910           0 :   goto __pyx_L0;
    5911             : 
    5912             :   /* "View.MemoryView":219
    5913             :  *         PyObject_Free(self._shape)
    5914             :  * 
    5915             :  *     @property             # <<<<<<<<<<<<<<
    5916             :  *     def memview(self):
    5917             :  *         return self.get_memview()
    5918             :  */
    5919             : 
    5920             :   /* function exit code */
    5921           0 :   __pyx_L1_error:;
    5922           0 :   __Pyx_XDECREF(__pyx_t_1);
    5923           0 :   __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    5924           0 :   __pyx_r = NULL;
    5925           0 :   __pyx_L0:;
    5926           0 :   __Pyx_XGIVEREF(__pyx_r);
    5927           0 :   __Pyx_RefNannyFinishContext();
    5928           0 :   return __pyx_r;
    5929             : }
    5930             : 
    5931             : /* "View.MemoryView":224
    5932             :  * 
    5933             :  *     @cname('get_memview')
    5934             :  *     cdef get_memview(self):             # <<<<<<<<<<<<<<
    5935             :  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
    5936             :  *         return  memoryview(self, flags, self.dtype_is_object)
    5937             :  */
    5938             : 
    5939           0 : static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) {
    5940           0 :   int __pyx_v_flags;
    5941           0 :   PyObject *__pyx_r = NULL;
    5942             :   __Pyx_RefNannyDeclarations
    5943           0 :   PyObject *__pyx_t_1 = NULL;
    5944           0 :   PyObject *__pyx_t_2 = NULL;
    5945           0 :   PyObject *__pyx_t_3 = NULL;
    5946           0 :   int __pyx_lineno = 0;
    5947           0 :   const char *__pyx_filename = NULL;
    5948           0 :   int __pyx_clineno = 0;
    5949           0 :   __Pyx_RefNannySetupContext("get_memview", 1);
    5950             : 
    5951             :   /* "View.MemoryView":225
    5952             :  *     @cname('get_memview')
    5953             :  *     cdef get_memview(self):
    5954             :  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE             # <<<<<<<<<<<<<<
    5955             :  *         return  memoryview(self, flags, self.dtype_is_object)
    5956             :  * 
    5957             :  */
    5958           0 :   __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE);
    5959             : 
    5960             :   /* "View.MemoryView":226
    5961             :  *     cdef get_memview(self):
    5962             :  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
    5963             :  *         return  memoryview(self, flags, self.dtype_is_object)             # <<<<<<<<<<<<<<
    5964             :  * 
    5965             :  *     def __len__(self):
    5966             :  */
    5967           0 :   __Pyx_XDECREF(__pyx_r);
    5968           0 :   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 226, __pyx_L1_error)
    5969           0 :   __Pyx_GOTREF(__pyx_t_1);
    5970           0 :   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error)
    5971           0 :   __Pyx_GOTREF(__pyx_t_2);
    5972           0 :   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 226, __pyx_L1_error)
    5973           0 :   __Pyx_GOTREF(__pyx_t_3);
    5974           0 :   __Pyx_INCREF((PyObject *)__pyx_v_self);
    5975           0 :   __Pyx_GIVEREF((PyObject *)__pyx_v_self);
    5976           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self))) __PYX_ERR(1, 226, __pyx_L1_error);
    5977           0 :   __Pyx_GIVEREF(__pyx_t_1);
    5978           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 226, __pyx_L1_error);
    5979           0 :   __Pyx_GIVEREF(__pyx_t_2);
    5980           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error);
    5981           0 :   __pyx_t_1 = 0;
    5982           0 :   __pyx_t_2 = 0;
    5983           0 :   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error)
    5984           0 :   __Pyx_GOTREF(__pyx_t_2);
    5985           0 :   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    5986           0 :   __pyx_r = __pyx_t_2;
    5987           0 :   __pyx_t_2 = 0;
    5988           0 :   goto __pyx_L0;
    5989             : 
    5990             :   /* "View.MemoryView":224
    5991             :  * 
    5992             :  *     @cname('get_memview')
    5993             :  *     cdef get_memview(self):             # <<<<<<<<<<<<<<
    5994             :  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
    5995             :  *         return  memoryview(self, flags, self.dtype_is_object)
    5996             :  */
    5997             : 
    5998             :   /* function exit code */
    5999           0 :   __pyx_L1_error:;
    6000           0 :   __Pyx_XDECREF(__pyx_t_1);
    6001           0 :   __Pyx_XDECREF(__pyx_t_2);
    6002           0 :   __Pyx_XDECREF(__pyx_t_3);
    6003           0 :   __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6004           0 :   __pyx_r = 0;
    6005           0 :   __pyx_L0:;
    6006           0 :   __Pyx_XGIVEREF(__pyx_r);
    6007           0 :   __Pyx_RefNannyFinishContext();
    6008           0 :   return __pyx_r;
    6009             : }
    6010             : 
    6011             : /* "View.MemoryView":228
    6012             :  *         return  memoryview(self, flags, self.dtype_is_object)
    6013             :  * 
    6014             :  *     def __len__(self):             # <<<<<<<<<<<<<<
    6015             :  *         return self._shape[0]
    6016             :  * 
    6017             :  */
    6018             : 
    6019             : /* Python wrapper */
    6020             : static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/
    6021           0 : static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) {
    6022           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6023           0 :   Py_ssize_t __pyx_r;
    6024             :   __Pyx_RefNannyDeclarations
    6025           0 :   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
    6026           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6027           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self));
    6028             : 
    6029             :   /* function exit code */
    6030           0 :   __Pyx_RefNannyFinishContext();
    6031           0 :   return __pyx_r;
    6032             : }
    6033             : 
    6034           0 : static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) {
    6035           0 :   Py_ssize_t __pyx_r;
    6036             : 
    6037             :   /* "View.MemoryView":229
    6038             :  * 
    6039             :  *     def __len__(self):
    6040             :  *         return self._shape[0]             # <<<<<<<<<<<<<<
    6041             :  * 
    6042             :  *     def __getattr__(self, attr):
    6043             :  */
    6044           0 :   __pyx_r = (__pyx_v_self->_shape[0]);
    6045           0 :   goto __pyx_L0;
    6046             : 
    6047             :   /* "View.MemoryView":228
    6048             :  *         return  memoryview(self, flags, self.dtype_is_object)
    6049             :  * 
    6050             :  *     def __len__(self):             # <<<<<<<<<<<<<<
    6051             :  *         return self._shape[0]
    6052             :  * 
    6053             :  */
    6054             : 
    6055             :   /* function exit code */
    6056           0 :   __pyx_L0:;
    6057           0 :   return __pyx_r;
    6058             : }
    6059             : 
    6060             : /* "View.MemoryView":231
    6061             :  *         return self._shape[0]
    6062             :  * 
    6063             :  *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
    6064             :  *         return getattr(self.memview, attr)
    6065             :  * 
    6066             :  */
    6067             : 
    6068             : /* Python wrapper */
    6069             : static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/
    6070           0 : static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) {
    6071           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6072           0 :   PyObject *__pyx_r = 0;
    6073             :   __Pyx_RefNannyDeclarations
    6074           0 :   __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
    6075           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6076           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr));
    6077             : 
    6078             :   /* function exit code */
    6079           0 :   __Pyx_RefNannyFinishContext();
    6080           0 :   return __pyx_r;
    6081             : }
    6082             : 
    6083           0 : static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) {
    6084           0 :   PyObject *__pyx_r = NULL;
    6085             :   __Pyx_RefNannyDeclarations
    6086           0 :   PyObject *__pyx_t_1 = NULL;
    6087           0 :   PyObject *__pyx_t_2 = NULL;
    6088           0 :   int __pyx_lineno = 0;
    6089           0 :   const char *__pyx_filename = NULL;
    6090           0 :   int __pyx_clineno = 0;
    6091           0 :   __Pyx_RefNannySetupContext("__getattr__", 1);
    6092             : 
    6093             :   /* "View.MemoryView":232
    6094             :  * 
    6095             :  *     def __getattr__(self, attr):
    6096             :  *         return getattr(self.memview, attr)             # <<<<<<<<<<<<<<
    6097             :  * 
    6098             :  *     def __getitem__(self, item):
    6099             :  */
    6100           0 :   __Pyx_XDECREF(__pyx_r);
    6101           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 232, __pyx_L1_error)
    6102           0 :   __Pyx_GOTREF(__pyx_t_1);
    6103           0 :   __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 232, __pyx_L1_error)
    6104           0 :   __Pyx_GOTREF(__pyx_t_2);
    6105           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    6106           0 :   __pyx_r = __pyx_t_2;
    6107           0 :   __pyx_t_2 = 0;
    6108           0 :   goto __pyx_L0;
    6109             : 
    6110             :   /* "View.MemoryView":231
    6111             :  *         return self._shape[0]
    6112             :  * 
    6113             :  *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
    6114             :  *         return getattr(self.memview, attr)
    6115             :  * 
    6116             :  */
    6117             : 
    6118             :   /* function exit code */
    6119           0 :   __pyx_L1_error:;
    6120           0 :   __Pyx_XDECREF(__pyx_t_1);
    6121           0 :   __Pyx_XDECREF(__pyx_t_2);
    6122           0 :   __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6123           0 :   __pyx_r = NULL;
    6124           0 :   __pyx_L0:;
    6125           0 :   __Pyx_XGIVEREF(__pyx_r);
    6126           0 :   __Pyx_RefNannyFinishContext();
    6127           0 :   return __pyx_r;
    6128             : }
    6129             : 
    6130             : /* "View.MemoryView":234
    6131             :  *         return getattr(self.memview, attr)
    6132             :  * 
    6133             :  *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
    6134             :  *         return self.memview[item]
    6135             :  * 
    6136             :  */
    6137             : 
    6138             : /* Python wrapper */
    6139             : static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
    6140           0 : static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
    6141           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6142           0 :   PyObject *__pyx_r = 0;
    6143             :   __Pyx_RefNannyDeclarations
    6144           0 :   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
    6145           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6146           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item));
    6147             : 
    6148             :   /* function exit code */
    6149           0 :   __Pyx_RefNannyFinishContext();
    6150           0 :   return __pyx_r;
    6151             : }
    6152             : 
    6153           0 : static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) {
    6154           0 :   PyObject *__pyx_r = NULL;
    6155             :   __Pyx_RefNannyDeclarations
    6156           0 :   PyObject *__pyx_t_1 = NULL;
    6157           0 :   PyObject *__pyx_t_2 = NULL;
    6158           0 :   int __pyx_lineno = 0;
    6159           0 :   const char *__pyx_filename = NULL;
    6160           0 :   int __pyx_clineno = 0;
    6161           0 :   __Pyx_RefNannySetupContext("__getitem__", 1);
    6162             : 
    6163             :   /* "View.MemoryView":235
    6164             :  * 
    6165             :  *     def __getitem__(self, item):
    6166             :  *         return self.memview[item]             # <<<<<<<<<<<<<<
    6167             :  * 
    6168             :  *     def __setitem__(self, item, value):
    6169             :  */
    6170           0 :   __Pyx_XDECREF(__pyx_r);
    6171           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 235, __pyx_L1_error)
    6172           0 :   __Pyx_GOTREF(__pyx_t_1);
    6173           0 :   __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 235, __pyx_L1_error)
    6174           0 :   __Pyx_GOTREF(__pyx_t_2);
    6175           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    6176           0 :   __pyx_r = __pyx_t_2;
    6177           0 :   __pyx_t_2 = 0;
    6178           0 :   goto __pyx_L0;
    6179             : 
    6180             :   /* "View.MemoryView":234
    6181             :  *         return getattr(self.memview, attr)
    6182             :  * 
    6183             :  *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
    6184             :  *         return self.memview[item]
    6185             :  * 
    6186             :  */
    6187             : 
    6188             :   /* function exit code */
    6189           0 :   __pyx_L1_error:;
    6190           0 :   __Pyx_XDECREF(__pyx_t_1);
    6191           0 :   __Pyx_XDECREF(__pyx_t_2);
    6192           0 :   __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6193           0 :   __pyx_r = NULL;
    6194           0 :   __pyx_L0:;
    6195           0 :   __Pyx_XGIVEREF(__pyx_r);
    6196           0 :   __Pyx_RefNannyFinishContext();
    6197           0 :   return __pyx_r;
    6198             : }
    6199             : 
    6200             : /* "View.MemoryView":237
    6201             :  *         return self.memview[item]
    6202             :  * 
    6203             :  *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
    6204             :  *         self.memview[item] = value
    6205             :  * 
    6206             :  */
    6207             : 
    6208             : /* Python wrapper */
    6209             : static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/
    6210           0 : static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
    6211           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6212           0 :   int __pyx_r;
    6213             :   __Pyx_RefNannyDeclarations
    6214           0 :   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
    6215           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6216           0 :   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value));
    6217             : 
    6218             :   /* function exit code */
    6219           0 :   __Pyx_RefNannyFinishContext();
    6220           0 :   return __pyx_r;
    6221             : }
    6222             : 
    6223           0 : static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
    6224           0 :   int __pyx_r;
    6225             :   __Pyx_RefNannyDeclarations
    6226           0 :   PyObject *__pyx_t_1 = NULL;
    6227           0 :   int __pyx_lineno = 0;
    6228           0 :   const char *__pyx_filename = NULL;
    6229           0 :   int __pyx_clineno = 0;
    6230           0 :   __Pyx_RefNannySetupContext("__setitem__", 1);
    6231             : 
    6232             :   /* "View.MemoryView":238
    6233             :  * 
    6234             :  *     def __setitem__(self, item, value):
    6235             :  *         self.memview[item] = value             # <<<<<<<<<<<<<<
    6236             :  * 
    6237             :  * 
    6238             :  */
    6239           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 238, __pyx_L1_error)
    6240           0 :   __Pyx_GOTREF(__pyx_t_1);
    6241           0 :   if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0))) __PYX_ERR(1, 238, __pyx_L1_error)
    6242           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    6243             : 
    6244             :   /* "View.MemoryView":237
    6245             :  *         return self.memview[item]
    6246             :  * 
    6247             :  *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
    6248             :  *         self.memview[item] = value
    6249             :  * 
    6250             :  */
    6251             : 
    6252             :   /* function exit code */
    6253           0 :   __pyx_r = 0;
    6254           0 :   goto __pyx_L0;
    6255           0 :   __pyx_L1_error:;
    6256           0 :   __Pyx_XDECREF(__pyx_t_1);
    6257           0 :   __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6258           0 :   __pyx_r = -1;
    6259           0 :   __pyx_L0:;
    6260           0 :   __Pyx_RefNannyFinishContext();
    6261           0 :   return __pyx_r;
    6262             : }
    6263             : 
    6264             : /* "(tree fragment)":1
    6265             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
    6266             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6267             :  * def __setstate_cython__(self, __pyx_state):
    6268             :  */
    6269             : 
    6270             : /* Python wrapper */
    6271             : static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, 
    6272             : #if CYTHON_METH_FASTCALL
    6273             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6274             : #else
    6275             : PyObject *__pyx_args, PyObject *__pyx_kwds
    6276             : #endif
    6277             : ); /*proto*/
    6278           0 : static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, 
    6279             : #if CYTHON_METH_FASTCALL
    6280             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6281             : #else
    6282             : PyObject *__pyx_args, PyObject *__pyx_kwds
    6283             : #endif
    6284             : ) {
    6285             :   #if !CYTHON_METH_FASTCALL
    6286             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    6287             :   #endif
    6288           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6289           0 :   PyObject *__pyx_r = 0;
    6290             :   __Pyx_RefNannyDeclarations
    6291           0 :   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
    6292             :   #if !CYTHON_METH_FASTCALL
    6293             :   #if CYTHON_ASSUME_SAFE_MACROS
    6294             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    6295             :   #else
    6296             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
    6297             :   #endif
    6298             :   #endif
    6299           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
    6300           0 :   if (unlikely(__pyx_nargs > 0)) {
    6301           0 :     __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
    6302           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
    6303           0 :   __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self));
    6304             : 
    6305             :   /* function exit code */
    6306           0 :   __Pyx_RefNannyFinishContext();
    6307           0 :   return __pyx_r;
    6308             : }
    6309             : 
    6310           0 : static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) {
    6311           0 :   PyObject *__pyx_r = NULL;
    6312             :   __Pyx_RefNannyDeclarations
    6313           0 :   int __pyx_lineno = 0;
    6314           0 :   const char *__pyx_filename = NULL;
    6315           0 :   int __pyx_clineno = 0;
    6316           0 :   __Pyx_RefNannySetupContext("__reduce_cython__", 1);
    6317             : 
    6318             :   /* "(tree fragment)":2
    6319             :  * def __reduce_cython__(self):
    6320             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
    6321             :  * def __setstate_cython__(self, __pyx_state):
    6322             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6323             :  */
    6324           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
    6325           0 :   __PYX_ERR(1, 2, __pyx_L1_error)
    6326             : 
    6327             :   /* "(tree fragment)":1
    6328             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
    6329             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6330             :  * def __setstate_cython__(self, __pyx_state):
    6331             :  */
    6332             : 
    6333             :   /* function exit code */
    6334           0 :   __pyx_L1_error:;
    6335           0 :   __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6336           0 :   __pyx_r = NULL;
    6337           0 :   __Pyx_XGIVEREF(__pyx_r);
    6338           0 :   __Pyx_RefNannyFinishContext();
    6339           0 :   return __pyx_r;
    6340             : }
    6341             : 
    6342             : /* "(tree fragment)":3
    6343             :  * def __reduce_cython__(self):
    6344             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6345             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
    6346             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6347             :  */
    6348             : 
    6349             : /* Python wrapper */
    6350             : static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, 
    6351             : #if CYTHON_METH_FASTCALL
    6352             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6353             : #else
    6354             : PyObject *__pyx_args, PyObject *__pyx_kwds
    6355             : #endif
    6356             : ); /*proto*/
    6357           0 : static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, 
    6358             : #if CYTHON_METH_FASTCALL
    6359             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6360             : #else
    6361             : PyObject *__pyx_args, PyObject *__pyx_kwds
    6362             : #endif
    6363             : ) {
    6364           0 :   CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
    6365             :   #if !CYTHON_METH_FASTCALL
    6366             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    6367             :   #endif
    6368           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6369           0 :   PyObject* values[1] = {0};
    6370           0 :   int __pyx_lineno = 0;
    6371           0 :   const char *__pyx_filename = NULL;
    6372           0 :   int __pyx_clineno = 0;
    6373           0 :   PyObject *__pyx_r = 0;
    6374             :   __Pyx_RefNannyDeclarations
    6375           0 :   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
    6376             :   #if !CYTHON_METH_FASTCALL
    6377             :   #if CYTHON_ASSUME_SAFE_MACROS
    6378             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    6379             :   #else
    6380             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
    6381             :   #endif
    6382             :   #endif
    6383           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
    6384             :   {
    6385           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    6386           0 :     if (__pyx_kwds) {
    6387           0 :       Py_ssize_t kw_args;
    6388           0 :       switch (__pyx_nargs) {
    6389           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    6390           0 :         CYTHON_FALLTHROUGH;
    6391           0 :         case  0: break;
    6392           0 :         default: goto __pyx_L5_argtuple_error;
    6393             :       }
    6394           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
    6395           0 :       switch (__pyx_nargs) {
    6396             :         case  0:
    6397           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
    6398           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
    6399           0 :           kw_args--;
    6400             :         }
    6401           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error)
    6402           0 :         else goto __pyx_L5_argtuple_error;
    6403             :       }
    6404           0 :       if (unlikely(kw_args > 0)) {
    6405           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
    6406           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error)
    6407             :       }
    6408           0 :     } else if (unlikely(__pyx_nargs != 1)) {
    6409           0 :       goto __pyx_L5_argtuple_error;
    6410             :     } else {
    6411           0 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    6412             :     }
    6413           0 :     __pyx_v___pyx_state = values[0];
    6414             :   }
    6415           0 :   goto __pyx_L6_skip;
    6416           0 :   __pyx_L5_argtuple_error:;
    6417           0 :   __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
    6418           0 :   __pyx_L6_skip:;
    6419           0 :   goto __pyx_L4_argument_unpacking_done;
    6420           0 :   __pyx_L3_error:;
    6421             :   {
    6422           0 :     Py_ssize_t __pyx_temp;
    6423           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    6424             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    6425             :     }
    6426             :   }
    6427           0 :   __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6428           0 :   __Pyx_RefNannyFinishContext();
    6429           0 :   return NULL;
    6430           0 :   __pyx_L4_argument_unpacking_done:;
    6431           0 :   __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v___pyx_state);
    6432             : 
    6433             :   /* function exit code */
    6434             :   {
    6435           0 :     Py_ssize_t __pyx_temp;
    6436           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    6437             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    6438             :     }
    6439             :   }
    6440             :   __Pyx_RefNannyFinishContext();
    6441             :   return __pyx_r;
    6442             : }
    6443             : 
    6444           0 : static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
    6445           0 :   PyObject *__pyx_r = NULL;
    6446             :   __Pyx_RefNannyDeclarations
    6447           0 :   int __pyx_lineno = 0;
    6448           0 :   const char *__pyx_filename = NULL;
    6449           0 :   int __pyx_clineno = 0;
    6450           0 :   __Pyx_RefNannySetupContext("__setstate_cython__", 1);
    6451             : 
    6452             :   /* "(tree fragment)":4
    6453             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6454             :  * def __setstate_cython__(self, __pyx_state):
    6455             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
    6456             :  */
    6457           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
    6458           0 :   __PYX_ERR(1, 4, __pyx_L1_error)
    6459             : 
    6460             :   /* "(tree fragment)":3
    6461             :  * def __reduce_cython__(self):
    6462             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6463             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
    6464             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
    6465             :  */
    6466             : 
    6467             :   /* function exit code */
    6468           0 :   __pyx_L1_error:;
    6469           0 :   __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6470           0 :   __pyx_r = NULL;
    6471           0 :   __Pyx_XGIVEREF(__pyx_r);
    6472           0 :   __Pyx_RefNannyFinishContext();
    6473           0 :   return __pyx_r;
    6474             : }
    6475             : 
    6476             : /* "View.MemoryView":248
    6477             :  * 
    6478             :  * @cname("__pyx_array_allocate_buffer")
    6479             :  * cdef int _allocate_buffer(array self) except -1:             # <<<<<<<<<<<<<<
    6480             :  * 
    6481             :  * 
    6482             :  */
    6483             : 
    6484           0 : static int __pyx_array_allocate_buffer(struct __pyx_array_obj *__pyx_v_self) {
    6485           0 :   Py_ssize_t __pyx_v_i;
    6486           0 :   PyObject **__pyx_v_p;
    6487           0 :   int __pyx_r;
    6488           0 :   int __pyx_t_1;
    6489           0 :   Py_ssize_t __pyx_t_2;
    6490           0 :   Py_ssize_t __pyx_t_3;
    6491           0 :   Py_ssize_t __pyx_t_4;
    6492           0 :   int __pyx_lineno = 0;
    6493           0 :   const char *__pyx_filename = NULL;
    6494           0 :   int __pyx_clineno = 0;
    6495             : 
    6496             :   /* "View.MemoryView":254
    6497             :  *     cdef PyObject **p
    6498             :  * 
    6499             :  *     self.free_data = True             # <<<<<<<<<<<<<<
    6500             :  *     self.data = <char *>malloc(self.len)
    6501             :  *     if not self.data:
    6502             :  */
    6503           0 :   __pyx_v_self->free_data = 1;
    6504             : 
    6505             :   /* "View.MemoryView":255
    6506             :  * 
    6507             :  *     self.free_data = True
    6508             :  *     self.data = <char *>malloc(self.len)             # <<<<<<<<<<<<<<
    6509             :  *     if not self.data:
    6510             :  *         raise MemoryError, "unable to allocate array data."
    6511             :  */
    6512           0 :   __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len));
    6513             : 
    6514             :   /* "View.MemoryView":256
    6515             :  *     self.free_data = True
    6516             :  *     self.data = <char *>malloc(self.len)
    6517             :  *     if not self.data:             # <<<<<<<<<<<<<<
    6518             :  *         raise MemoryError, "unable to allocate array data."
    6519             :  * 
    6520             :  */
    6521           0 :   __pyx_t_1 = (!(__pyx_v_self->data != 0));
    6522           0 :   if (unlikely(__pyx_t_1)) {
    6523             : 
    6524             :     /* "View.MemoryView":257
    6525             :  *     self.data = <char *>malloc(self.len)
    6526             :  *     if not self.data:
    6527             :  *         raise MemoryError, "unable to allocate array data."             # <<<<<<<<<<<<<<
    6528             :  * 
    6529             :  *     if self.dtype_is_object:
    6530             :  */
    6531           0 :     __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_kp_s_unable_to_allocate_array_data, 0, 0);
    6532           0 :     __PYX_ERR(1, 257, __pyx_L1_error)
    6533             : 
    6534             :     /* "View.MemoryView":256
    6535             :  *     self.free_data = True
    6536             :  *     self.data = <char *>malloc(self.len)
    6537             :  *     if not self.data:             # <<<<<<<<<<<<<<
    6538             :  *         raise MemoryError, "unable to allocate array data."
    6539             :  * 
    6540             :  */
    6541             :   }
    6542             : 
    6543             :   /* "View.MemoryView":259
    6544             :  *         raise MemoryError, "unable to allocate array data."
    6545             :  * 
    6546             :  *     if self.dtype_is_object:             # <<<<<<<<<<<<<<
    6547             :  *         p = <PyObject **> self.data
    6548             :  *         for i in range(self.len // self.itemsize):
    6549             :  */
    6550           0 :   if (__pyx_v_self->dtype_is_object) {
    6551             : 
    6552             :     /* "View.MemoryView":260
    6553             :  * 
    6554             :  *     if self.dtype_is_object:
    6555             :  *         p = <PyObject **> self.data             # <<<<<<<<<<<<<<
    6556             :  *         for i in range(self.len // self.itemsize):
    6557             :  *             p[i] = Py_None
    6558             :  */
    6559           0 :     __pyx_v_p = ((PyObject **)__pyx_v_self->data);
    6560             : 
    6561             :     /* "View.MemoryView":261
    6562             :  *     if self.dtype_is_object:
    6563             :  *         p = <PyObject **> self.data
    6564             :  *         for i in range(self.len // self.itemsize):             # <<<<<<<<<<<<<<
    6565             :  *             p[i] = Py_None
    6566             :  *             Py_INCREF(Py_None)
    6567             :  */
    6568           0 :     if (unlikely(__pyx_v_self->itemsize == 0)) {
    6569           0 :       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
    6570           0 :       __PYX_ERR(1, 261, __pyx_L1_error)
    6571             :     }
    6572           0 :     else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_self->itemsize == (Py_ssize_t)-1)  && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) {
    6573           0 :       PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
    6574           0 :       __PYX_ERR(1, 261, __pyx_L1_error)
    6575             :     }
    6576           0 :     __pyx_t_2 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_self->itemsize);
    6577           0 :     __pyx_t_3 = __pyx_t_2;
    6578           0 :     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    6579           0 :       __pyx_v_i = __pyx_t_4;
    6580             : 
    6581             :       /* "View.MemoryView":262
    6582             :  *         p = <PyObject **> self.data
    6583             :  *         for i in range(self.len // self.itemsize):
    6584             :  *             p[i] = Py_None             # <<<<<<<<<<<<<<
    6585             :  *             Py_INCREF(Py_None)
    6586             :  *     return 0
    6587             :  */
    6588           0 :       (__pyx_v_p[__pyx_v_i]) = Py_None;
    6589             : 
    6590             :       /* "View.MemoryView":263
    6591             :  *         for i in range(self.len // self.itemsize):
    6592             :  *             p[i] = Py_None
    6593             :  *             Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
    6594             :  *     return 0
    6595             :  * 
    6596             :  */
    6597           0 :       Py_INCREF(Py_None);
    6598             :     }
    6599             : 
    6600             :     /* "View.MemoryView":259
    6601             :  *         raise MemoryError, "unable to allocate array data."
    6602             :  * 
    6603             :  *     if self.dtype_is_object:             # <<<<<<<<<<<<<<
    6604             :  *         p = <PyObject **> self.data
    6605             :  *         for i in range(self.len // self.itemsize):
    6606             :  */
    6607             :   }
    6608             : 
    6609             :   /* "View.MemoryView":264
    6610             :  *             p[i] = Py_None
    6611             :  *             Py_INCREF(Py_None)
    6612             :  *     return 0             # <<<<<<<<<<<<<<
    6613             :  * 
    6614             :  * 
    6615             :  */
    6616           0 :   __pyx_r = 0;
    6617           0 :   goto __pyx_L0;
    6618             : 
    6619             :   /* "View.MemoryView":248
    6620             :  * 
    6621             :  * @cname("__pyx_array_allocate_buffer")
    6622             :  * cdef int _allocate_buffer(array self) except -1:             # <<<<<<<<<<<<<<
    6623             :  * 
    6624             :  * 
    6625             :  */
    6626             : 
    6627             :   /* function exit code */
    6628           0 :   __pyx_L1_error:;
    6629           0 :   __Pyx_AddTraceback("View.MemoryView._allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6630           0 :   __pyx_r = -1;
    6631           0 :   __pyx_L0:;
    6632           0 :   return __pyx_r;
    6633             : }
    6634             : 
    6635             : /* "View.MemoryView":268
    6636             :  * 
    6637             :  * @cname("__pyx_array_new")
    6638             :  * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf):             # <<<<<<<<<<<<<<
    6639             :  *     cdef array result
    6640             :  *     cdef str mode = "fortran" if c_mode[0] == b'f' else "c"  # this often comes from a constant C string.
    6641             :  */
    6642             : 
    6643           0 : static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_c_mode, char *__pyx_v_buf) {
    6644           0 :   struct __pyx_array_obj *__pyx_v_result = 0;
    6645           0 :   PyObject *__pyx_v_mode = 0;
    6646           0 :   struct __pyx_array_obj *__pyx_r = NULL;
    6647             :   __Pyx_RefNannyDeclarations
    6648           0 :   PyObject *__pyx_t_1 = NULL;
    6649           0 :   int __pyx_t_2;
    6650           0 :   PyObject *__pyx_t_3 = NULL;
    6651           0 :   PyObject *__pyx_t_4 = NULL;
    6652           0 :   int __pyx_lineno = 0;
    6653           0 :   const char *__pyx_filename = NULL;
    6654           0 :   int __pyx_clineno = 0;
    6655           0 :   __Pyx_RefNannySetupContext("array_cwrapper", 1);
    6656             : 
    6657             :   /* "View.MemoryView":270
    6658             :  * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf):
    6659             :  *     cdef array result
    6660             :  *     cdef str mode = "fortran" if c_mode[0] == b'f' else "c"  # this often comes from a constant C string.             # <<<<<<<<<<<<<<
    6661             :  * 
    6662             :  *     if buf is NULL:
    6663             :  */
    6664           0 :   __pyx_t_2 = ((__pyx_v_c_mode[0]) == 'f');
    6665           0 :   if (__pyx_t_2) {
    6666           0 :     __Pyx_INCREF(__pyx_n_s_fortran);
    6667             :     __pyx_t_1 = __pyx_n_s_fortran;
    6668             :   } else {
    6669           0 :     __Pyx_INCREF(__pyx_n_s_c);
    6670             :     __pyx_t_1 = __pyx_n_s_c;
    6671             :   }
    6672           0 :   __pyx_v_mode = ((PyObject*)__pyx_t_1);
    6673           0 :   __pyx_t_1 = 0;
    6674             : 
    6675             :   /* "View.MemoryView":272
    6676             :  *     cdef str mode = "fortran" if c_mode[0] == b'f' else "c"  # this often comes from a constant C string.
    6677             :  * 
    6678             :  *     if buf is NULL:             # <<<<<<<<<<<<<<
    6679             :  *         result = array.__new__(array, shape, itemsize, format, mode)
    6680             :  *     else:
    6681             :  */
    6682           0 :   __pyx_t_2 = (__pyx_v_buf == NULL);
    6683           0 :   if (__pyx_t_2) {
    6684             : 
    6685             :     /* "View.MemoryView":273
    6686             :  * 
    6687             :  *     if buf is NULL:
    6688             :  *         result = array.__new__(array, shape, itemsize, format, mode)             # <<<<<<<<<<<<<<
    6689             :  *     else:
    6690             :  *         result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False)
    6691             :  */
    6692           0 :     __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 273, __pyx_L1_error)
    6693           0 :     __Pyx_GOTREF(__pyx_t_1);
    6694           0 :     __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error)
    6695           0 :     __Pyx_GOTREF(__pyx_t_3);
    6696           0 :     __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 273, __pyx_L1_error)
    6697           0 :     __Pyx_GOTREF(__pyx_t_4);
    6698           0 :     __Pyx_INCREF(__pyx_v_shape);
    6699           0 :     __Pyx_GIVEREF(__pyx_v_shape);
    6700           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape)) __PYX_ERR(1, 273, __pyx_L1_error);
    6701           0 :     __Pyx_GIVEREF(__pyx_t_1);
    6702           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 273, __pyx_L1_error);
    6703           0 :     __Pyx_GIVEREF(__pyx_t_3);
    6704           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error);
    6705           0 :     __Pyx_INCREF(__pyx_v_mode);
    6706           0 :     __Pyx_GIVEREF(__pyx_v_mode);
    6707           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_mode)) __PYX_ERR(1, 273, __pyx_L1_error);
    6708           0 :     __pyx_t_1 = 0;
    6709           0 :     __pyx_t_3 = 0;
    6710           0 :     __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_array_type), __pyx_t_4, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error)
    6711           0 :     __Pyx_GOTREF((PyObject *)__pyx_t_3);
    6712           0 :     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    6713           0 :     __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_3);
    6714           0 :     __pyx_t_3 = 0;
    6715             : 
    6716             :     /* "View.MemoryView":272
    6717             :  *     cdef str mode = "fortran" if c_mode[0] == b'f' else "c"  # this often comes from a constant C string.
    6718             :  * 
    6719             :  *     if buf is NULL:             # <<<<<<<<<<<<<<
    6720             :  *         result = array.__new__(array, shape, itemsize, format, mode)
    6721             :  *     else:
    6722             :  */
    6723           0 :     goto __pyx_L3;
    6724             :   }
    6725             : 
    6726             :   /* "View.MemoryView":275
    6727             :  *         result = array.__new__(array, shape, itemsize, format, mode)
    6728             :  *     else:
    6729             :  *         result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False)             # <<<<<<<<<<<<<<
    6730             :  *         result.data = buf
    6731             :  * 
    6732             :  */
    6733             :   /*else*/ {
    6734           0 :     __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error)
    6735           0 :     __Pyx_GOTREF(__pyx_t_3);
    6736           0 :     __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error)
    6737           0 :     __Pyx_GOTREF(__pyx_t_4);
    6738           0 :     __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 275, __pyx_L1_error)
    6739           0 :     __Pyx_GOTREF(__pyx_t_1);
    6740           0 :     __Pyx_INCREF(__pyx_v_shape);
    6741           0 :     __Pyx_GIVEREF(__pyx_v_shape);
    6742           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape)) __PYX_ERR(1, 275, __pyx_L1_error);
    6743           0 :     __Pyx_GIVEREF(__pyx_t_3);
    6744           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error);
    6745           0 :     __Pyx_GIVEREF(__pyx_t_4);
    6746           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error);
    6747           0 :     __Pyx_INCREF(__pyx_v_mode);
    6748           0 :     __Pyx_GIVEREF(__pyx_v_mode);
    6749           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_mode)) __PYX_ERR(1, 275, __pyx_L1_error);
    6750           0 :     __pyx_t_3 = 0;
    6751           0 :     __pyx_t_4 = 0;
    6752           0 :     __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error)
    6753           0 :     __Pyx_GOTREF(__pyx_t_4);
    6754           0 :     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 275, __pyx_L1_error)
    6755           0 :     __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_array_type), __pyx_t_1, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error)
    6756           0 :     __Pyx_GOTREF((PyObject *)__pyx_t_3);
    6757           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    6758           0 :     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    6759           0 :     __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_3);
    6760           0 :     __pyx_t_3 = 0;
    6761             : 
    6762             :     /* "View.MemoryView":276
    6763             :  *     else:
    6764             :  *         result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False)
    6765             :  *         result.data = buf             # <<<<<<<<<<<<<<
    6766             :  * 
    6767             :  *     return result
    6768             :  */
    6769           0 :     __pyx_v_result->data = __pyx_v_buf;
    6770             :   }
    6771           0 :   __pyx_L3:;
    6772             : 
    6773             :   /* "View.MemoryView":278
    6774             :  *         result.data = buf
    6775             :  * 
    6776             :  *     return result             # <<<<<<<<<<<<<<
    6777             :  * 
    6778             :  * 
    6779             :  */
    6780           0 :   __Pyx_XDECREF((PyObject *)__pyx_r);
    6781           0 :   __Pyx_INCREF((PyObject *)__pyx_v_result);
    6782           0 :   __pyx_r = __pyx_v_result;
    6783           0 :   goto __pyx_L0;
    6784             : 
    6785             :   /* "View.MemoryView":268
    6786             :  * 
    6787             :  * @cname("__pyx_array_new")
    6788             :  * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf):             # <<<<<<<<<<<<<<
    6789             :  *     cdef array result
    6790             :  *     cdef str mode = "fortran" if c_mode[0] == b'f' else "c"  # this often comes from a constant C string.
    6791             :  */
    6792             : 
    6793             :   /* function exit code */
    6794           0 :   __pyx_L1_error:;
    6795           0 :   __Pyx_XDECREF(__pyx_t_1);
    6796           0 :   __Pyx_XDECREF(__pyx_t_3);
    6797           0 :   __Pyx_XDECREF(__pyx_t_4);
    6798           0 :   __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6799           0 :   __pyx_r = 0;
    6800           0 :   __pyx_L0:;
    6801           0 :   __Pyx_XDECREF((PyObject *)__pyx_v_result);
    6802           0 :   __Pyx_XDECREF(__pyx_v_mode);
    6803           0 :   __Pyx_XGIVEREF((PyObject *)__pyx_r);
    6804           0 :   __Pyx_RefNannyFinishContext();
    6805           0 :   return __pyx_r;
    6806             : }
    6807             : 
    6808             : /* "View.MemoryView":304
    6809             :  * cdef class Enum(object):
    6810             :  *     cdef object name
    6811             :  *     def __init__(self, name):             # <<<<<<<<<<<<<<
    6812             :  *         self.name = name
    6813             :  *     def __repr__(self):
    6814             :  */
    6815             : 
    6816             : /* Python wrapper */
    6817             : static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    6818           5 : static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
    6819           5 :   PyObject *__pyx_v_name = 0;
    6820           5 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    6821           5 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6822           5 :   PyObject* values[1] = {0};
    6823           5 :   int __pyx_lineno = 0;
    6824           5 :   const char *__pyx_filename = NULL;
    6825           5 :   int __pyx_clineno = 0;
    6826           5 :   int __pyx_r;
    6827             :   __Pyx_RefNannyDeclarations
    6828           5 :   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
    6829             :   #if CYTHON_ASSUME_SAFE_MACROS
    6830           5 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    6831             :   #else
    6832             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
    6833             :   #endif
    6834           5 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6835             :   {
    6836           5 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,0};
    6837           5 :     if (__pyx_kwds) {
    6838           0 :       Py_ssize_t kw_args;
    6839           0 :       switch (__pyx_nargs) {
    6840           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    6841           0 :         CYTHON_FALLTHROUGH;
    6842           0 :         case  0: break;
    6843           0 :         default: goto __pyx_L5_argtuple_error;
    6844             :       }
    6845           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
    6846           0 :       switch (__pyx_nargs) {
    6847           0 :         case  0:
    6848           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
    6849           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
    6850           0 :           kw_args--;
    6851             :         }
    6852           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 304, __pyx_L3_error)
    6853           0 :         else goto __pyx_L5_argtuple_error;
    6854             :       }
    6855           0 :       if (unlikely(kw_args > 0)) {
    6856           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
    6857           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(1, 304, __pyx_L3_error)
    6858             :       }
    6859           5 :     } else if (unlikely(__pyx_nargs != 1)) {
    6860           0 :       goto __pyx_L5_argtuple_error;
    6861             :     } else {
    6862           5 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    6863             :     }
    6864           5 :     __pyx_v_name = values[0];
    6865             :   }
    6866           5 :   goto __pyx_L6_skip;
    6867           0 :   __pyx_L5_argtuple_error:;
    6868           0 :   __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 304, __pyx_L3_error)
    6869           5 :   __pyx_L6_skip:;
    6870           5 :   goto __pyx_L4_argument_unpacking_done;
    6871           0 :   __pyx_L3_error:;
    6872             :   {
    6873           0 :     Py_ssize_t __pyx_temp;
    6874           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    6875             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    6876             :     }
    6877             :   }
    6878           0 :   __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    6879           0 :   __Pyx_RefNannyFinishContext();
    6880           0 :   return -1;
    6881           5 :   __pyx_L4_argument_unpacking_done:;
    6882           5 :   __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name);
    6883             : 
    6884             :   /* function exit code */
    6885             :   {
    6886           5 :     Py_ssize_t __pyx_temp;
    6887           5 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    6888             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    6889             :     }
    6890             :   }
    6891             :   __Pyx_RefNannyFinishContext();
    6892             :   return __pyx_r;
    6893             : }
    6894             : 
    6895           5 : static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) {
    6896           5 :   int __pyx_r;
    6897             :   __Pyx_RefNannyDeclarations
    6898           5 :   __Pyx_RefNannySetupContext("__init__", 1);
    6899             : 
    6900             :   /* "View.MemoryView":305
    6901             :  *     cdef object name
    6902             :  *     def __init__(self, name):
    6903             :  *         self.name = name             # <<<<<<<<<<<<<<
    6904             :  *     def __repr__(self):
    6905             :  *         return self.name
    6906             :  */
    6907           5 :   __Pyx_INCREF(__pyx_v_name);
    6908           5 :   __Pyx_GIVEREF(__pyx_v_name);
    6909           5 :   __Pyx_GOTREF(__pyx_v_self->name);
    6910           5 :   __Pyx_DECREF(__pyx_v_self->name);
    6911           5 :   __pyx_v_self->name = __pyx_v_name;
    6912             : 
    6913             :   /* "View.MemoryView":304
    6914             :  * cdef class Enum(object):
    6915             :  *     cdef object name
    6916             :  *     def __init__(self, name):             # <<<<<<<<<<<<<<
    6917             :  *         self.name = name
    6918             :  *     def __repr__(self):
    6919             :  */
    6920             : 
    6921             :   /* function exit code */
    6922           5 :   __pyx_r = 0;
    6923           5 :   __Pyx_RefNannyFinishContext();
    6924           5 :   return __pyx_r;
    6925             : }
    6926             : 
    6927             : /* "View.MemoryView":306
    6928             :  *     def __init__(self, name):
    6929             :  *         self.name = name
    6930             :  *     def __repr__(self):             # <<<<<<<<<<<<<<
    6931             :  *         return self.name
    6932             :  * 
    6933             :  */
    6934             : 
    6935             : /* Python wrapper */
    6936             : static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/
    6937           0 : static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) {
    6938           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    6939           0 :   PyObject *__pyx_r = 0;
    6940             :   __Pyx_RefNannyDeclarations
    6941           0 :   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
    6942           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    6943           0 :   __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));
    6944             : 
    6945             :   /* function exit code */
    6946           0 :   __Pyx_RefNannyFinishContext();
    6947           0 :   return __pyx_r;
    6948             : }
    6949             : 
    6950           0 : static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
    6951           0 :   PyObject *__pyx_r = NULL;
    6952             :   __Pyx_RefNannyDeclarations
    6953           0 :   __Pyx_RefNannySetupContext("__repr__", 1);
    6954             : 
    6955             :   /* "View.MemoryView":307
    6956             :  *         self.name = name
    6957             :  *     def __repr__(self):
    6958             :  *         return self.name             # <<<<<<<<<<<<<<
    6959             :  * 
    6960             :  * cdef generic = Enum("<strided and direct or indirect>")
    6961             :  */
    6962           0 :   __Pyx_XDECREF(__pyx_r);
    6963           0 :   __Pyx_INCREF(__pyx_v_self->name);
    6964           0 :   __pyx_r = __pyx_v_self->name;
    6965           0 :   goto __pyx_L0;
    6966             : 
    6967             :   /* "View.MemoryView":306
    6968             :  *     def __init__(self, name):
    6969             :  *         self.name = name
    6970             :  *     def __repr__(self):             # <<<<<<<<<<<<<<
    6971             :  *         return self.name
    6972             :  * 
    6973             :  */
    6974             : 
    6975             :   /* function exit code */
    6976           0 :   __pyx_L0:;
    6977           0 :   __Pyx_XGIVEREF(__pyx_r);
    6978           0 :   __Pyx_RefNannyFinishContext();
    6979           0 :   return __pyx_r;
    6980             : }
    6981             : 
    6982             : /* "(tree fragment)":1
    6983             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
    6984             :  *     cdef tuple state
    6985             :  *     cdef object _dict
    6986             :  */
    6987             : 
    6988             : /* Python wrapper */
    6989             : static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, 
    6990             : #if CYTHON_METH_FASTCALL
    6991             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6992             : #else
    6993             : PyObject *__pyx_args, PyObject *__pyx_kwds
    6994             : #endif
    6995             : ); /*proto*/
    6996           0 : static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, 
    6997             : #if CYTHON_METH_FASTCALL
    6998             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    6999             : #else
    7000             : PyObject *__pyx_args, PyObject *__pyx_kwds
    7001             : #endif
    7002             : ) {
    7003             :   #if !CYTHON_METH_FASTCALL
    7004             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    7005             :   #endif
    7006           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    7007           0 :   PyObject *__pyx_r = 0;
    7008             :   __Pyx_RefNannyDeclarations
    7009           0 :   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
    7010             :   #if !CYTHON_METH_FASTCALL
    7011             :   #if CYTHON_ASSUME_SAFE_MACROS
    7012             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    7013             :   #else
    7014             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
    7015             :   #endif
    7016             :   #endif
    7017           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
    7018           0 :   if (unlikely(__pyx_nargs > 0)) {
    7019           0 :     __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
    7020           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
    7021           0 :   __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));
    7022             : 
    7023             :   /* function exit code */
    7024           0 :   __Pyx_RefNannyFinishContext();
    7025           0 :   return __pyx_r;
    7026             : }
    7027             : 
    7028           0 : static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
    7029           0 :   PyObject *__pyx_v_state = 0;
    7030           0 :   PyObject *__pyx_v__dict = 0;
    7031           0 :   int __pyx_v_use_setstate;
    7032           0 :   PyObject *__pyx_r = NULL;
    7033             :   __Pyx_RefNannyDeclarations
    7034           0 :   PyObject *__pyx_t_1 = NULL;
    7035           0 :   int __pyx_t_2;
    7036           0 :   PyObject *__pyx_t_3 = NULL;
    7037           0 :   PyObject *__pyx_t_4 = NULL;
    7038           0 :   int __pyx_lineno = 0;
    7039           0 :   const char *__pyx_filename = NULL;
    7040           0 :   int __pyx_clineno = 0;
    7041           0 :   __Pyx_RefNannySetupContext("__reduce_cython__", 1);
    7042             : 
    7043             :   /* "(tree fragment)":5
    7044             :  *     cdef object _dict
    7045             :  *     cdef bint use_setstate
    7046             :  *     state = (self.name,)             # <<<<<<<<<<<<<<
    7047             :  *     _dict = getattr(self, '__dict__', None)
    7048             :  *     if _dict is not None:
    7049             :  */
    7050           0 :   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
    7051           0 :   __Pyx_GOTREF(__pyx_t_1);
    7052           0 :   __Pyx_INCREF(__pyx_v_self->name);
    7053           0 :   __Pyx_GIVEREF(__pyx_v_self->name);
    7054           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name)) __PYX_ERR(1, 5, __pyx_L1_error);
    7055           0 :   __pyx_v_state = ((PyObject*)__pyx_t_1);
    7056           0 :   __pyx_t_1 = 0;
    7057             : 
    7058             :   /* "(tree fragment)":6
    7059             :  *     cdef bint use_setstate
    7060             :  *     state = (self.name,)
    7061             :  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
    7062             :  *     if _dict is not None:
    7063             :  *         state += (_dict,)
    7064             :  */
    7065           0 :   __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
    7066           0 :   __Pyx_GOTREF(__pyx_t_1);
    7067           0 :   __pyx_v__dict = __pyx_t_1;
    7068           0 :   __pyx_t_1 = 0;
    7069             : 
    7070             :   /* "(tree fragment)":7
    7071             :  *     state = (self.name,)
    7072             :  *     _dict = getattr(self, '__dict__', None)
    7073             :  *     if _dict is not None:             # <<<<<<<<<<<<<<
    7074             :  *         state += (_dict,)
    7075             :  *         use_setstate = True
    7076             :  */
    7077           0 :   __pyx_t_2 = (__pyx_v__dict != Py_None);
    7078           0 :   if (__pyx_t_2) {
    7079             : 
    7080             :     /* "(tree fragment)":8
    7081             :  *     _dict = getattr(self, '__dict__', None)
    7082             :  *     if _dict is not None:
    7083             :  *         state += (_dict,)             # <<<<<<<<<<<<<<
    7084             :  *         use_setstate = True
    7085             :  *     else:
    7086             :  */
    7087           0 :     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
    7088           0 :     __Pyx_GOTREF(__pyx_t_1);
    7089           0 :     __Pyx_INCREF(__pyx_v__dict);
    7090           0 :     __Pyx_GIVEREF(__pyx_v__dict);
    7091           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error);
    7092           0 :     __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    7093           0 :     __Pyx_GOTREF(__pyx_t_3);
    7094           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    7095           0 :     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    7096           0 :     __pyx_t_3 = 0;
    7097             : 
    7098             :     /* "(tree fragment)":9
    7099             :  *     if _dict is not None:
    7100             :  *         state += (_dict,)
    7101             :  *         use_setstate = True             # <<<<<<<<<<<<<<
    7102             :  *     else:
    7103             :  *         use_setstate = self.name is not None
    7104             :  */
    7105           0 :     __pyx_v_use_setstate = 1;
    7106             : 
    7107             :     /* "(tree fragment)":7
    7108             :  *     state = (self.name,)
    7109             :  *     _dict = getattr(self, '__dict__', None)
    7110             :  *     if _dict is not None:             # <<<<<<<<<<<<<<
    7111             :  *         state += (_dict,)
    7112             :  *         use_setstate = True
    7113             :  */
    7114           0 :     goto __pyx_L3;
    7115             :   }
    7116             : 
    7117             :   /* "(tree fragment)":11
    7118             :  *         use_setstate = True
    7119             :  *     else:
    7120             :  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
    7121             :  *     if use_setstate:
    7122             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state
    7123             :  */
    7124             :   /*else*/ {
    7125           0 :     __pyx_t_2 = (__pyx_v_self->name != Py_None);
    7126           0 :     __pyx_v_use_setstate = __pyx_t_2;
    7127             :   }
    7128           0 :   __pyx_L3:;
    7129             : 
    7130             :   /* "(tree fragment)":12
    7131             :  *     else:
    7132             :  *         use_setstate = self.name is not None
    7133             :  *     if use_setstate:             # <<<<<<<<<<<<<<
    7134             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state
    7135             :  *     else:
    7136             :  */
    7137           0 :   if (__pyx_v_use_setstate) {
    7138             : 
    7139             :     /* "(tree fragment)":13
    7140             :  *         use_setstate = self.name is not None
    7141             :  *     if use_setstate:
    7142             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state             # <<<<<<<<<<<<<<
    7143             :  *     else:
    7144             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, state)
    7145             :  */
    7146           0 :     __Pyx_XDECREF(__pyx_r);
    7147           0 :     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
    7148           0 :     __Pyx_GOTREF(__pyx_t_3);
    7149           0 :     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
    7150           0 :     __Pyx_GOTREF(__pyx_t_1);
    7151           0 :     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    7152           0 :     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    7153           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error);
    7154           0 :     __Pyx_INCREF(__pyx_int_136983863);
    7155           0 :     __Pyx_GIVEREF(__pyx_int_136983863);
    7156           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_136983863)) __PYX_ERR(1, 13, __pyx_L1_error);
    7157           0 :     __Pyx_INCREF(Py_None);
    7158           0 :     __Pyx_GIVEREF(Py_None);
    7159           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error);
    7160           0 :     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
    7161           0 :     __Pyx_GOTREF(__pyx_t_4);
    7162           0 :     __Pyx_GIVEREF(__pyx_t_3);
    7163           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error);
    7164           0 :     __Pyx_GIVEREF(__pyx_t_1);
    7165           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error);
    7166           0 :     __Pyx_INCREF(__pyx_v_state);
    7167           0 :     __Pyx_GIVEREF(__pyx_v_state);
    7168           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error);
    7169           0 :     __pyx_t_3 = 0;
    7170           0 :     __pyx_t_1 = 0;
    7171           0 :     __pyx_r = __pyx_t_4;
    7172           0 :     __pyx_t_4 = 0;
    7173           0 :     goto __pyx_L0;
    7174             : 
    7175             :     /* "(tree fragment)":12
    7176             :  *     else:
    7177             :  *         use_setstate = self.name is not None
    7178             :  *     if use_setstate:             # <<<<<<<<<<<<<<
    7179             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state
    7180             :  *     else:
    7181             :  */
    7182             :   }
    7183             : 
    7184             :   /* "(tree fragment)":15
    7185             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state
    7186             :  *     else:
    7187             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, state)             # <<<<<<<<<<<<<<
    7188             :  * def __setstate_cython__(self, __pyx_state):
    7189             :  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
    7190             :  */
    7191             :   /*else*/ {
    7192           0 :     __Pyx_XDECREF(__pyx_r);
    7193           0 :     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
    7194           0 :     __Pyx_GOTREF(__pyx_t_4);
    7195           0 :     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
    7196           0 :     __Pyx_GOTREF(__pyx_t_1);
    7197           0 :     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    7198           0 :     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    7199           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error);
    7200           0 :     __Pyx_INCREF(__pyx_int_136983863);
    7201           0 :     __Pyx_GIVEREF(__pyx_int_136983863);
    7202           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_136983863)) __PYX_ERR(1, 15, __pyx_L1_error);
    7203           0 :     __Pyx_INCREF(__pyx_v_state);
    7204           0 :     __Pyx_GIVEREF(__pyx_v_state);
    7205           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error);
    7206           0 :     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
    7207           0 :     __Pyx_GOTREF(__pyx_t_3);
    7208           0 :     __Pyx_GIVEREF(__pyx_t_4);
    7209           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error);
    7210           0 :     __Pyx_GIVEREF(__pyx_t_1);
    7211           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error);
    7212           0 :     __pyx_t_4 = 0;
    7213           0 :     __pyx_t_1 = 0;
    7214           0 :     __pyx_r = __pyx_t_3;
    7215           0 :     __pyx_t_3 = 0;
    7216           0 :     goto __pyx_L0;
    7217             :   }
    7218             : 
    7219             :   /* "(tree fragment)":1
    7220             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
    7221             :  *     cdef tuple state
    7222             :  *     cdef object _dict
    7223             :  */
    7224             : 
    7225             :   /* function exit code */
    7226           0 :   __pyx_L1_error:;
    7227           0 :   __Pyx_XDECREF(__pyx_t_1);
    7228           0 :   __Pyx_XDECREF(__pyx_t_3);
    7229           0 :   __Pyx_XDECREF(__pyx_t_4);
    7230           0 :   __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    7231           0 :   __pyx_r = NULL;
    7232           0 :   __pyx_L0:;
    7233           0 :   __Pyx_XDECREF(__pyx_v_state);
    7234           0 :   __Pyx_XDECREF(__pyx_v__dict);
    7235           0 :   __Pyx_XGIVEREF(__pyx_r);
    7236           0 :   __Pyx_RefNannyFinishContext();
    7237           0 :   return __pyx_r;
    7238             : }
    7239             : 
    7240             : /* "(tree fragment)":16
    7241             :  *     else:
    7242             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, state)
    7243             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
    7244             :  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
    7245             :  */
    7246             : 
    7247             : /* Python wrapper */
    7248             : static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, 
    7249             : #if CYTHON_METH_FASTCALL
    7250             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    7251             : #else
    7252             : PyObject *__pyx_args, PyObject *__pyx_kwds
    7253             : #endif
    7254             : ); /*proto*/
    7255           0 : static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, 
    7256             : #if CYTHON_METH_FASTCALL
    7257             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
    7258             : #else
    7259             : PyObject *__pyx_args, PyObject *__pyx_kwds
    7260             : #endif
    7261             : ) {
    7262           0 :   PyObject *__pyx_v___pyx_state = 0;
    7263             :   #if !CYTHON_METH_FASTCALL
    7264             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    7265             :   #endif
    7266           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    7267           0 :   PyObject* values[1] = {0};
    7268           0 :   int __pyx_lineno = 0;
    7269           0 :   const char *__pyx_filename = NULL;
    7270           0 :   int __pyx_clineno = 0;
    7271           0 :   PyObject *__pyx_r = 0;
    7272             :   __Pyx_RefNannyDeclarations
    7273           0 :   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
    7274             :   #if !CYTHON_METH_FASTCALL
    7275             :   #if CYTHON_ASSUME_SAFE_MACROS
    7276             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    7277             :   #else
    7278             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
    7279             :   #endif
    7280             :   #endif
    7281           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
    7282             :   {
    7283           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    7284           0 :     if (__pyx_kwds) {
    7285           0 :       Py_ssize_t kw_args;
    7286           0 :       switch (__pyx_nargs) {
    7287           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    7288           0 :         CYTHON_FALLTHROUGH;
    7289           0 :         case  0: break;
    7290           0 :         default: goto __pyx_L5_argtuple_error;
    7291             :       }
    7292           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
    7293           0 :       switch (__pyx_nargs) {
    7294             :         case  0:
    7295           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
    7296           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
    7297           0 :           kw_args--;
    7298             :         }
    7299           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error)
    7300           0 :         else goto __pyx_L5_argtuple_error;
    7301             :       }
    7302           0 :       if (unlikely(kw_args > 0)) {
    7303           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
    7304           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error)
    7305             :       }
    7306           0 :     } else if (unlikely(__pyx_nargs != 1)) {
    7307           0 :       goto __pyx_L5_argtuple_error;
    7308             :     } else {
    7309           0 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    7310             :     }
    7311           0 :     __pyx_v___pyx_state = values[0];
    7312             :   }
    7313           0 :   goto __pyx_L6_skip;
    7314           0 :   __pyx_L5_argtuple_error:;
    7315           0 :   __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error)
    7316           0 :   __pyx_L6_skip:;
    7317           0 :   goto __pyx_L4_argument_unpacking_done;
    7318           0 :   __pyx_L3_error:;
    7319             :   {
    7320           0 :     Py_ssize_t __pyx_temp;
    7321           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    7322             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    7323             :     }
    7324             :   }
    7325           0 :   __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    7326           0 :   __Pyx_RefNannyFinishContext();
    7327           0 :   return NULL;
    7328           0 :   __pyx_L4_argument_unpacking_done:;
    7329           0 :   __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v___pyx_state);
    7330             : 
    7331             :   /* function exit code */
    7332             :   {
    7333           0 :     Py_ssize_t __pyx_temp;
    7334           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    7335             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    7336             :     }
    7337             :   }
    7338             :   __Pyx_RefNannyFinishContext();
    7339             :   return __pyx_r;
    7340             : }
    7341             : 
    7342           0 : static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
    7343           0 :   PyObject *__pyx_r = NULL;
    7344             :   __Pyx_RefNannyDeclarations
    7345           0 :   PyObject *__pyx_t_1 = NULL;
    7346           0 :   int __pyx_lineno = 0;
    7347           0 :   const char *__pyx_filename = NULL;
    7348           0 :   int __pyx_clineno = 0;
    7349           0 :   __Pyx_RefNannySetupContext("__setstate_cython__", 1);
    7350             : 
    7351             :   /* "(tree fragment)":17
    7352             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, state)
    7353             :  * def __setstate_cython__(self, __pyx_state):
    7354             :  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
    7355             :  */
    7356           0 :   if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error)
    7357           0 :   __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
    7358           0 :   __Pyx_GOTREF(__pyx_t_1);
    7359           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    7360             : 
    7361             :   /* "(tree fragment)":16
    7362             :  *     else:
    7363             :  *         return __pyx_unpickle_Enum, (type(self), 0x82a3537, state)
    7364             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
    7365             :  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
    7366             :  */
    7367             : 
    7368             :   /* function exit code */
    7369           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    7370           0 :   goto __pyx_L0;
    7371           0 :   __pyx_L1_error:;
    7372           0 :   __Pyx_XDECREF(__pyx_t_1);
    7373           0 :   __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    7374           0 :   __pyx_r = NULL;
    7375           0 :   __pyx_L0:;
    7376           0 :   __Pyx_XGIVEREF(__pyx_r);
    7377           0 :   __Pyx_RefNannyFinishContext();
    7378           0 :   return __pyx_r;
    7379             : }
    7380             : 
    7381             : /* "View.MemoryView":349
    7382             :  *     cdef __Pyx_TypeInfo *typeinfo
    7383             :  * 
    7384             :  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
    7385             :  *         self.obj = obj
    7386             :  *         self.flags = flags
    7387             :  */
    7388             : 
    7389             : /* Python wrapper */
    7390             : static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    7391         408 : static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
    7392         408 :   PyObject *__pyx_v_obj = 0;
    7393         408 :   int __pyx_v_flags;
    7394         408 :   int __pyx_v_dtype_is_object;
    7395         408 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
    7396         408 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    7397         408 :   PyObject* values[3] = {0,0,0};
    7398         408 :   int __pyx_lineno = 0;
    7399         408 :   const char *__pyx_filename = NULL;
    7400         408 :   int __pyx_clineno = 0;
    7401         408 :   int __pyx_r;
    7402             :   __Pyx_RefNannyDeclarations
    7403         408 :   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
    7404             :   #if CYTHON_ASSUME_SAFE_MACROS
    7405         408 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
    7406             :   #else
    7407             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
    7408             :   #endif
    7409         408 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    7410             :   {
    7411         408 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0};
    7412         408 :     if (__pyx_kwds) {
    7413           0 :       Py_ssize_t kw_args;
    7414           0 :       switch (__pyx_nargs) {
    7415           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    7416           0 :         CYTHON_FALLTHROUGH;
    7417           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    7418           0 :         CYTHON_FALLTHROUGH;
    7419           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    7420           0 :         CYTHON_FALLTHROUGH;
    7421           0 :         case  0: break;
    7422           0 :         default: goto __pyx_L5_argtuple_error;
    7423             :       }
    7424           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
    7425           0 :       switch (__pyx_nargs) {
    7426           0 :         case  0:
    7427           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
    7428           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
    7429           0 :           kw_args--;
    7430             :         }
    7431           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error)
    7432           0 :         else goto __pyx_L5_argtuple_error;
    7433           0 :         CYTHON_FALLTHROUGH;
    7434             :         case  1:
    7435           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
    7436           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
    7437           0 :           kw_args--;
    7438             :         }
    7439           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error)
    7440             :         else {
    7441           0 :           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(1, 349, __pyx_L3_error)
    7442             :         }
    7443           0 :         CYTHON_FALLTHROUGH;
    7444             :         case  2:
    7445           0 :         if (kw_args > 0) {
    7446           0 :           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dtype_is_object);
    7447           0 :           if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
    7448           0 :           else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error)
    7449             :         }
    7450             :       }
    7451           0 :       if (unlikely(kw_args > 0)) {
    7452           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
    7453           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(1, 349, __pyx_L3_error)
    7454             :       }
    7455             :     } else {
    7456         408 :       switch (__pyx_nargs) {
    7457         408 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    7458         408 :         CYTHON_FALLTHROUGH;
    7459         408 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    7460         408 :         values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
    7461         408 :         break;
    7462           0 :         default: goto __pyx_L5_argtuple_error;
    7463             :       }
    7464             :     }
    7465         408 :     __pyx_v_obj = values[0];
    7466         408 :     __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error)
    7467         408 :     if (values[2]) {
    7468         408 :       __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error)
    7469             :     } else {
    7470             :       __pyx_v_dtype_is_object = ((int)0);
    7471             :     }
    7472             :   }
    7473         408 :   goto __pyx_L6_skip;
    7474           0 :   __pyx_L5_argtuple_error:;
    7475           0 :   __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 349, __pyx_L3_error)
    7476         408 :   __pyx_L6_skip:;
    7477         408 :   goto __pyx_L4_argument_unpacking_done;
    7478           0 :   __pyx_L3_error:;
    7479             :   {
    7480           0 :     Py_ssize_t __pyx_temp;
    7481           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    7482             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    7483             :     }
    7484             :   }
    7485           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    7486           0 :   __Pyx_RefNannyFinishContext();
    7487           0 :   return -1;
    7488         408 :   __pyx_L4_argument_unpacking_done:;
    7489         408 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object);
    7490             : 
    7491             :   /* function exit code */
    7492             :   {
    7493         408 :     Py_ssize_t __pyx_temp;
    7494         408 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    7495             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    7496             :     }
    7497             :   }
    7498             :   __Pyx_RefNannyFinishContext();
    7499             :   return __pyx_r;
    7500             : }
    7501             : 
    7502         408 : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) {
    7503         408 :   int __pyx_r;
    7504             :   __Pyx_RefNannyDeclarations
    7505         408 :   int __pyx_t_1;
    7506         408 :   int __pyx_t_2;
    7507         408 :   int __pyx_t_3;
    7508         408 :   Py_intptr_t __pyx_t_4;
    7509         408 :   size_t __pyx_t_5;
    7510         408 :   int __pyx_lineno = 0;
    7511         408 :   const char *__pyx_filename = NULL;
    7512         408 :   int __pyx_clineno = 0;
    7513         408 :   __Pyx_RefNannySetupContext("__cinit__", 1);
    7514             : 
    7515             :   /* "View.MemoryView":350
    7516             :  * 
    7517             :  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
    7518             :  *         self.obj = obj             # <<<<<<<<<<<<<<
    7519             :  *         self.flags = flags
    7520             :  *         if type(self) is memoryview or obj is not None:
    7521             :  */
    7522         408 :   __Pyx_INCREF(__pyx_v_obj);
    7523         408 :   __Pyx_GIVEREF(__pyx_v_obj);
    7524         408 :   __Pyx_GOTREF(__pyx_v_self->obj);
    7525         408 :   __Pyx_DECREF(__pyx_v_self->obj);
    7526         408 :   __pyx_v_self->obj = __pyx_v_obj;
    7527             : 
    7528             :   /* "View.MemoryView":351
    7529             :  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
    7530             :  *         self.obj = obj
    7531             :  *         self.flags = flags             # <<<<<<<<<<<<<<
    7532             :  *         if type(self) is memoryview or obj is not None:
    7533             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7534             :  */
    7535         408 :   __pyx_v_self->flags = __pyx_v_flags;
    7536             : 
    7537             :   /* "View.MemoryView":352
    7538             :  *         self.obj = obj
    7539             :  *         self.flags = flags
    7540             :  *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
    7541             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7542             :  *             if <PyObject *> self.view.obj == NULL:
    7543             :  */
    7544         408 :   __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type));
    7545         408 :   if (!__pyx_t_2) {
    7546           3 :   } else {
    7547         405 :     __pyx_t_1 = __pyx_t_2;
    7548         405 :     goto __pyx_L4_bool_binop_done;
    7549             :   }
    7550           3 :   __pyx_t_2 = (__pyx_v_obj != Py_None);
    7551           3 :   __pyx_t_1 = __pyx_t_2;
    7552         408 :   __pyx_L4_bool_binop_done:;
    7553         408 :   if (__pyx_t_1) {
    7554             : 
    7555             :     /* "View.MemoryView":353
    7556             :  *         self.flags = flags
    7557             :  *         if type(self) is memoryview or obj is not None:
    7558             :  *             __Pyx_GetBuffer(obj, &self.view, flags)             # <<<<<<<<<<<<<<
    7559             :  *             if <PyObject *> self.view.obj == NULL:
    7560             :  *                 (<__pyx_buffer *> &self.view).obj = Py_None
    7561             :  */
    7562         405 :     __pyx_t_3 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 353, __pyx_L1_error)
    7563             : 
    7564             :     /* "View.MemoryView":354
    7565             :  *         if type(self) is memoryview or obj is not None:
    7566             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7567             :  *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
    7568             :  *                 (<__pyx_buffer *> &self.view).obj = Py_None
    7569             :  *                 Py_INCREF(Py_None)
    7570             :  */
    7571         405 :     __pyx_t_1 = (((PyObject *)__pyx_v_self->view.obj) == NULL);
    7572         405 :     if (__pyx_t_1) {
    7573             : 
    7574             :       /* "View.MemoryView":355
    7575             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7576             :  *             if <PyObject *> self.view.obj == NULL:
    7577             :  *                 (<__pyx_buffer *> &self.view).obj = Py_None             # <<<<<<<<<<<<<<
    7578             :  *                 Py_INCREF(Py_None)
    7579             :  * 
    7580             :  */
    7581           0 :       ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None;
    7582             : 
    7583             :       /* "View.MemoryView":356
    7584             :  *             if <PyObject *> self.view.obj == NULL:
    7585             :  *                 (<__pyx_buffer *> &self.view).obj = Py_None
    7586             :  *                 Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
    7587             :  * 
    7588             :  *         if not __PYX_CYTHON_ATOMICS_ENABLED():
    7589             :  */
    7590           0 :       Py_INCREF(Py_None);
    7591             : 
    7592             :       /* "View.MemoryView":354
    7593             :  *         if type(self) is memoryview or obj is not None:
    7594             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7595             :  *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
    7596             :  *                 (<__pyx_buffer *> &self.view).obj = Py_None
    7597             :  *                 Py_INCREF(Py_None)
    7598             :  */
    7599             :     }
    7600             : 
    7601             :     /* "View.MemoryView":352
    7602             :  *         self.obj = obj
    7603             :  *         self.flags = flags
    7604             :  *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
    7605             :  *             __Pyx_GetBuffer(obj, &self.view, flags)
    7606             :  *             if <PyObject *> self.view.obj == NULL:
    7607             :  */
    7608             :   }
    7609             : 
    7610             :   /* "View.MemoryView":358
    7611             :  *                 Py_INCREF(Py_None)
    7612             :  * 
    7613             :  *         if not __PYX_CYTHON_ATOMICS_ENABLED():             # <<<<<<<<<<<<<<
    7614             :  *             global __pyx_memoryview_thread_locks_used
    7615             :  *             if __pyx_memoryview_thread_locks_used < 8:
    7616             :  */
    7617         408 :   __pyx_t_1 = (!__PYX_CYTHON_ATOMICS_ENABLED());
    7618         408 :   if (__pyx_t_1) {
    7619             : 
    7620             :     /* "View.MemoryView":360
    7621             :  *         if not __PYX_CYTHON_ATOMICS_ENABLED():
    7622             :  *             global __pyx_memoryview_thread_locks_used
    7623             :  *             if __pyx_memoryview_thread_locks_used < 8:             # <<<<<<<<<<<<<<
    7624             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
    7625             :  *                 __pyx_memoryview_thread_locks_used += 1
    7626             :  */
    7627             :     __pyx_t_1 = (__pyx_memoryview_thread_locks_used < 8);
    7628             :     if (__pyx_t_1) {
    7629             : 
    7630             :       /* "View.MemoryView":361
    7631             :  *             global __pyx_memoryview_thread_locks_used
    7632             :  *             if __pyx_memoryview_thread_locks_used < 8:
    7633             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]             # <<<<<<<<<<<<<<
    7634             :  *                 __pyx_memoryview_thread_locks_used += 1
    7635             :  *             if self.lock is NULL:
    7636             :  */
    7637             :       __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);
    7638             : 
    7639             :       /* "View.MemoryView":362
    7640             :  *             if __pyx_memoryview_thread_locks_used < 8:
    7641             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
    7642             :  *                 __pyx_memoryview_thread_locks_used += 1             # <<<<<<<<<<<<<<
    7643             :  *             if self.lock is NULL:
    7644             :  *                 self.lock = PyThread_allocate_lock()
    7645             :  */
    7646             :       __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1);
    7647             : 
    7648             :       /* "View.MemoryView":360
    7649             :  *         if not __PYX_CYTHON_ATOMICS_ENABLED():
    7650             :  *             global __pyx_memoryview_thread_locks_used
    7651             :  *             if __pyx_memoryview_thread_locks_used < 8:             # <<<<<<<<<<<<<<
    7652             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
    7653             :  *                 __pyx_memoryview_thread_locks_used += 1
    7654             :  */
    7655             :     }
    7656             : 
    7657             :     /* "View.MemoryView":363
    7658             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
    7659             :  *                 __pyx_memoryview_thread_locks_used += 1
    7660             :  *             if self.lock is NULL:             # <<<<<<<<<<<<<<
    7661             :  *                 self.lock = PyThread_allocate_lock()
    7662             :  *                 if self.lock is NULL:
    7663             :  */
    7664             :     __pyx_t_1 = (__pyx_v_self->lock == NULL);
    7665             :     if (__pyx_t_1) {
    7666             : 
    7667             :       /* "View.MemoryView":364
    7668             :  *                 __pyx_memoryview_thread_locks_used += 1
    7669             :  *             if self.lock is NULL:
    7670             :  *                 self.lock = PyThread_allocate_lock()             # <<<<<<<<<<<<<<
    7671             :  *                 if self.lock is NULL:
    7672             :  *                     raise MemoryError
    7673             :  */
    7674             :       __pyx_v_self->lock = PyThread_allocate_lock();
    7675             : 
    7676             :       /* "View.MemoryView":365
    7677             :  *             if self.lock is NULL:
    7678             :  *                 self.lock = PyThread_allocate_lock()
    7679             :  *                 if self.lock is NULL:             # <<<<<<<<<<<<<<
    7680             :  *                     raise MemoryError
    7681             :  * 
    7682             :  */
    7683             :       __pyx_t_1 = (__pyx_v_self->lock == NULL);
    7684             :       if (unlikely(__pyx_t_1)) {
    7685             : 
    7686             :         /* "View.MemoryView":366
    7687             :  *                 self.lock = PyThread_allocate_lock()
    7688             :  *                 if self.lock is NULL:
    7689             :  *                     raise MemoryError             # <<<<<<<<<<<<<<
    7690             :  * 
    7691             :  *         if flags & PyBUF_FORMAT:
    7692             :  */
    7693             :         PyErr_NoMemory(); __PYX_ERR(1, 366, __pyx_L1_error)
    7694             : 
    7695             :         /* "View.MemoryView":365
    7696             :  *             if self.lock is NULL:
    7697             :  *                 self.lock = PyThread_allocate_lock()
    7698             :  *                 if self.lock is NULL:             # <<<<<<<<<<<<<<
    7699             :  *                     raise MemoryError
    7700             :  * 
    7701             :  */
    7702             :       }
    7703             : 
    7704             :       /* "View.MemoryView":363
    7705             :  *                 self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
    7706             :  *                 __pyx_memoryview_thread_locks_used += 1
    7707             :  *             if self.lock is NULL:             # <<<<<<<<<<<<<<
    7708             :  *                 self.lock = PyThread_allocate_lock()
    7709             :  *                 if self.lock is NULL:
    7710             :  */
    7711             :     }
    7712             : 
    7713             :     /* "View.MemoryView":358
    7714             :  *                 Py_INCREF(Py_None)
    7715             :  * 
    7716             :  *         if not __PYX_CYTHON_ATOMICS_ENABLED():             # <<<<<<<<<<<<<<
    7717             :  *             global __pyx_memoryview_thread_locks_used
    7718             :  *             if __pyx_memoryview_thread_locks_used < 8:
    7719             :  */
    7720             :   }
    7721             : 
    7722             :   /* "View.MemoryView":368
    7723             :  *                     raise MemoryError
    7724             :  * 
    7725             :  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
    7726             :  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
    7727             :  *         else:
    7728             :  */
    7729         408 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
    7730         408 :   if (__pyx_t_1) {
    7731             : 
    7732             :     /* "View.MemoryView":369
    7733             :  * 
    7734             :  *         if flags & PyBUF_FORMAT:
    7735             :  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')             # <<<<<<<<<<<<<<
    7736             :  *         else:
    7737             :  *             self.dtype_is_object = dtype_is_object
    7738             :  */
    7739         405 :     __pyx_t_2 = ((__pyx_v_self->view.format[0]) == 'O');
    7740         405 :     if (__pyx_t_2) {
    7741           6 :     } else {
    7742         399 :       __pyx_t_1 = __pyx_t_2;
    7743         399 :       goto __pyx_L12_bool_binop_done;
    7744             :     }
    7745           6 :     __pyx_t_2 = ((__pyx_v_self->view.format[1]) == '\x00');
    7746           6 :     __pyx_t_1 = __pyx_t_2;
    7747         405 :     __pyx_L12_bool_binop_done:;
    7748         405 :     __pyx_v_self->dtype_is_object = __pyx_t_1;
    7749             : 
    7750             :     /* "View.MemoryView":368
    7751             :  *                     raise MemoryError
    7752             :  * 
    7753             :  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
    7754             :  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
    7755             :  *         else:
    7756             :  */
    7757         405 :     goto __pyx_L11;
    7758             :   }
    7759             : 
    7760             :   /* "View.MemoryView":371
    7761             :  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
    7762             :  *         else:
    7763             :  *             self.dtype_is_object = dtype_is_object             # <<<<<<<<<<<<<<
    7764             :  * 
    7765             :  *         assert <Py_intptr_t><void*>(&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0
    7766             :  */
    7767             :   /*else*/ {
    7768           3 :     __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object;
    7769             :   }
    7770         408 :   __pyx_L11:;
    7771             : 
    7772             :   /* "View.MemoryView":373
    7773             :  *             self.dtype_is_object = dtype_is_object
    7774             :  * 
    7775             :  *         assert <Py_intptr_t><void*>(&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0             # <<<<<<<<<<<<<<
    7776             :  *         self.typeinfo = NULL
    7777             :  * 
    7778             :  */
    7779             :   #ifndef CYTHON_WITHOUT_ASSERTIONS
    7780         408 :   if (unlikely(__pyx_assertions_enabled())) {
    7781         408 :     __pyx_t_4 = ((Py_intptr_t)((void *)(&__pyx_v_self->acquisition_count)));
    7782         408 :     __pyx_t_5 = (sizeof(__pyx_atomic_int_type));
    7783         408 :     if (unlikely(__pyx_t_5 == 0)) {
    7784             :       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
    7785             :       __PYX_ERR(1, 373, __pyx_L1_error)
    7786             :     }
    7787         408 :     __pyx_t_1 = ((__pyx_t_4 % __pyx_t_5) == 0);
    7788         408 :     if (unlikely(!__pyx_t_1)) {
    7789           0 :       __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
    7790           0 :       __PYX_ERR(1, 373, __pyx_L1_error)
    7791             :     }
    7792             :   }
    7793             :   #else
    7794             :   if ((1)); else __PYX_ERR(1, 373, __pyx_L1_error)
    7795             :   #endif
    7796             : 
    7797             :   /* "View.MemoryView":374
    7798             :  * 
    7799             :  *         assert <Py_intptr_t><void*>(&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0
    7800             :  *         self.typeinfo = NULL             # <<<<<<<<<<<<<<
    7801             :  * 
    7802             :  *     def __dealloc__(memoryview self):
    7803             :  */
    7804         408 :   __pyx_v_self->typeinfo = NULL;
    7805             : 
    7806             :   /* "View.MemoryView":349
    7807             :  *     cdef __Pyx_TypeInfo *typeinfo
    7808             :  * 
    7809             :  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
    7810             :  *         self.obj = obj
    7811             :  *         self.flags = flags
    7812             :  */
    7813             : 
    7814             :   /* function exit code */
    7815         408 :   __pyx_r = 0;
    7816         408 :   goto __pyx_L0;
    7817           0 :   __pyx_L1_error:;
    7818           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    7819           0 :   __pyx_r = -1;
    7820         408 :   __pyx_L0:;
    7821         408 :   __Pyx_RefNannyFinishContext();
    7822         408 :   return __pyx_r;
    7823             : }
    7824             : 
    7825             : /* "View.MemoryView":376
    7826             :  *         self.typeinfo = NULL
    7827             :  * 
    7828             :  *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
    7829             :  *         if self.obj is not None:
    7830             :  *             __Pyx_ReleaseBuffer(&self.view)
    7831             :  */
    7832             : 
    7833             : /* Python wrapper */
    7834             : static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/
    7835         408 : static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) {
    7836         408 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    7837             :   __Pyx_RefNannyDeclarations
    7838         408 :   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
    7839         408 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    7840         408 :   __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self));
    7841             : 
    7842             :   /* function exit code */
    7843         408 :   __Pyx_RefNannyFinishContext();
    7844             : }
    7845             : 
    7846         408 : static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) {
    7847         408 :   int __pyx_v_i;
    7848         408 :   int __pyx_t_1;
    7849         408 :   int __pyx_t_2;
    7850         408 :   int __pyx_t_3;
    7851         408 :   int __pyx_t_4;
    7852         408 :   PyThread_type_lock __pyx_t_5;
    7853         408 :   PyThread_type_lock __pyx_t_6;
    7854             : 
    7855             :   /* "View.MemoryView":377
    7856             :  * 
    7857             :  *     def __dealloc__(memoryview self):
    7858             :  *         if self.obj is not None:             # <<<<<<<<<<<<<<
    7859             :  *             __Pyx_ReleaseBuffer(&self.view)
    7860             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:
    7861             :  */
    7862         408 :   __pyx_t_1 = (__pyx_v_self->obj != Py_None);
    7863         408 :   if (__pyx_t_1) {
    7864             : 
    7865             :     /* "View.MemoryView":378
    7866             :  *     def __dealloc__(memoryview self):
    7867             :  *         if self.obj is not None:
    7868             :  *             __Pyx_ReleaseBuffer(&self.view)             # <<<<<<<<<<<<<<
    7869             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:
    7870             :  * 
    7871             :  */
    7872         405 :     __Pyx_ReleaseBuffer((&__pyx_v_self->view));
    7873             : 
    7874             :     /* "View.MemoryView":377
    7875             :  * 
    7876             :  *     def __dealloc__(memoryview self):
    7877             :  *         if self.obj is not None:             # <<<<<<<<<<<<<<
    7878             :  *             __Pyx_ReleaseBuffer(&self.view)
    7879             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:
    7880             :  */
    7881         405 :     goto __pyx_L3;
    7882             :   }
    7883             : 
    7884             :   /* "View.MemoryView":379
    7885             :  *         if self.obj is not None:
    7886             :  *             __Pyx_ReleaseBuffer(&self.view)
    7887             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:             # <<<<<<<<<<<<<<
    7888             :  * 
    7889             :  *             (<__pyx_buffer *> &self.view).obj = NULL
    7890             :  */
    7891           3 :   __pyx_t_1 = (((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None);
    7892           3 :   if (__pyx_t_1) {
    7893             : 
    7894             :     /* "View.MemoryView":381
    7895             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:
    7896             :  * 
    7897             :  *             (<__pyx_buffer *> &self.view).obj = NULL             # <<<<<<<<<<<<<<
    7898             :  *             Py_DECREF(Py_None)
    7899             :  * 
    7900             :  */
    7901           3 :     ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL;
    7902             : 
    7903             :     /* "View.MemoryView":382
    7904             :  * 
    7905             :  *             (<__pyx_buffer *> &self.view).obj = NULL
    7906             :  *             Py_DECREF(Py_None)             # <<<<<<<<<<<<<<
    7907             :  * 
    7908             :  *         cdef int i
    7909             :  */
    7910           3 :     Py_DECREF(Py_None);
    7911             : 
    7912             :     /* "View.MemoryView":379
    7913             :  *         if self.obj is not None:
    7914             :  *             __Pyx_ReleaseBuffer(&self.view)
    7915             :  *         elif (<__pyx_buffer *> &self.view).obj == Py_None:             # <<<<<<<<<<<<<<
    7916             :  * 
    7917             :  *             (<__pyx_buffer *> &self.view).obj = NULL
    7918             :  */
    7919             :   }
    7920           0 :   __pyx_L3:;
    7921             : 
    7922             :   /* "View.MemoryView":386
    7923             :  *         cdef int i
    7924             :  *         global __pyx_memoryview_thread_locks_used
    7925             :  *         if self.lock != NULL:             # <<<<<<<<<<<<<<
    7926             :  *             for i in range(__pyx_memoryview_thread_locks_used):
    7927             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    7928             :  */
    7929         408 :   __pyx_t_1 = (__pyx_v_self->lock != NULL);
    7930         408 :   if (__pyx_t_1) {
    7931             : 
    7932             :     /* "View.MemoryView":387
    7933             :  *         global __pyx_memoryview_thread_locks_used
    7934             :  *         if self.lock != NULL:
    7935             :  *             for i in range(__pyx_memoryview_thread_locks_used):             # <<<<<<<<<<<<<<
    7936             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    7937             :  *                     __pyx_memoryview_thread_locks_used -= 1
    7938             :  */
    7939           0 :     __pyx_t_2 = __pyx_memoryview_thread_locks_used;
    7940           0 :     __pyx_t_3 = __pyx_t_2;
    7941           0 :     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    7942           0 :       __pyx_v_i = __pyx_t_4;
    7943             : 
    7944             :       /* "View.MemoryView":388
    7945             :  *         if self.lock != NULL:
    7946             :  *             for i in range(__pyx_memoryview_thread_locks_used):
    7947             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
    7948             :  *                     __pyx_memoryview_thread_locks_used -= 1
    7949             :  *                     if i != __pyx_memoryview_thread_locks_used:
    7950             :  */
    7951           0 :       __pyx_t_1 = ((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock);
    7952           0 :       if (__pyx_t_1) {
    7953             : 
    7954             :         /* "View.MemoryView":389
    7955             :  *             for i in range(__pyx_memoryview_thread_locks_used):
    7956             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    7957             :  *                     __pyx_memoryview_thread_locks_used -= 1             # <<<<<<<<<<<<<<
    7958             :  *                     if i != __pyx_memoryview_thread_locks_used:
    7959             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
    7960             :  */
    7961           0 :         __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1);
    7962             : 
    7963             :         /* "View.MemoryView":390
    7964             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    7965             :  *                     __pyx_memoryview_thread_locks_used -= 1
    7966             :  *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
    7967             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
    7968             :  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
    7969             :  */
    7970           0 :         __pyx_t_1 = (__pyx_v_i != __pyx_memoryview_thread_locks_used);
    7971           0 :         if (__pyx_t_1) {
    7972             : 
    7973             :           /* "View.MemoryView":392
    7974             :  *                     if i != __pyx_memoryview_thread_locks_used:
    7975             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
    7976             :  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])             # <<<<<<<<<<<<<<
    7977             :  *                     break
    7978             :  *             else:
    7979             :  */
    7980           0 :           __pyx_t_5 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);
    7981           0 :           __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_v_i]);
    7982             : 
    7983             :           /* "View.MemoryView":391
    7984             :  *                     __pyx_memoryview_thread_locks_used -= 1
    7985             :  *                     if i != __pyx_memoryview_thread_locks_used:
    7986             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (             # <<<<<<<<<<<<<<
    7987             :  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
    7988             :  *                     break
    7989             :  */
    7990           0 :           (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_5;
    7991           0 :           (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_6;
    7992             : 
    7993             :           /* "View.MemoryView":390
    7994             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    7995             :  *                     __pyx_memoryview_thread_locks_used -= 1
    7996             :  *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
    7997             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
    7998             :  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
    7999             :  */
    8000             :         }
    8001             : 
    8002             :         /* "View.MemoryView":393
    8003             :  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
    8004             :  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
    8005             :  *                     break             # <<<<<<<<<<<<<<
    8006             :  *             else:
    8007             :  *                 PyThread_free_lock(self.lock)
    8008             :  */
    8009           0 :         goto __pyx_L6_break;
    8010             : 
    8011             :         /* "View.MemoryView":388
    8012             :  *         if self.lock != NULL:
    8013             :  *             for i in range(__pyx_memoryview_thread_locks_used):
    8014             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
    8015             :  *                     __pyx_memoryview_thread_locks_used -= 1
    8016             :  *                     if i != __pyx_memoryview_thread_locks_used:
    8017             :  */
    8018             :       }
    8019             :     }
    8020             :     /*else*/ {
    8021             : 
    8022             :       /* "View.MemoryView":395
    8023             :  *                     break
    8024             :  *             else:
    8025             :  *                 PyThread_free_lock(self.lock)             # <<<<<<<<<<<<<<
    8026             :  * 
    8027             :  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
    8028             :  */
    8029           0 :       PyThread_free_lock(__pyx_v_self->lock);
    8030             :     }
    8031         408 :     __pyx_L6_break:;
    8032             : 
    8033             :     /* "View.MemoryView":386
    8034             :  *         cdef int i
    8035             :  *         global __pyx_memoryview_thread_locks_used
    8036             :  *         if self.lock != NULL:             # <<<<<<<<<<<<<<
    8037             :  *             for i in range(__pyx_memoryview_thread_locks_used):
    8038             :  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
    8039             :  */
    8040             :   }
    8041             : 
    8042             :   /* "View.MemoryView":376
    8043             :  *         self.typeinfo = NULL
    8044             :  * 
    8045             :  *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
    8046             :  *         if self.obj is not None:
    8047             :  *             __Pyx_ReleaseBuffer(&self.view)
    8048             :  */
    8049             : 
    8050             :   /* function exit code */
    8051         408 : }
    8052             : 
    8053             : /* "View.MemoryView":397
    8054             :  *                 PyThread_free_lock(self.lock)
    8055             :  * 
    8056             :  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
    8057             :  *         cdef Py_ssize_t dim
    8058             :  *         cdef char *itemp = <char *> self.view.buf
    8059             :  */
    8060             : 
    8061           0 : static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
    8062           0 :   Py_ssize_t __pyx_v_dim;
    8063           0 :   char *__pyx_v_itemp;
    8064           0 :   PyObject *__pyx_v_idx = NULL;
    8065           0 :   char *__pyx_r;
    8066             :   __Pyx_RefNannyDeclarations
    8067           0 :   Py_ssize_t __pyx_t_1;
    8068           0 :   PyObject *__pyx_t_2 = NULL;
    8069           0 :   Py_ssize_t __pyx_t_3;
    8070           0 :   PyObject *(*__pyx_t_4)(PyObject *);
    8071           0 :   PyObject *__pyx_t_5 = NULL;
    8072           0 :   Py_ssize_t __pyx_t_6;
    8073           0 :   char *__pyx_t_7;
    8074           0 :   int __pyx_lineno = 0;
    8075           0 :   const char *__pyx_filename = NULL;
    8076           0 :   int __pyx_clineno = 0;
    8077           0 :   __Pyx_RefNannySetupContext("get_item_pointer", 1);
    8078             : 
    8079             :   /* "View.MemoryView":399
    8080             :  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
    8081             :  *         cdef Py_ssize_t dim
    8082             :  *         cdef char *itemp = <char *> self.view.buf             # <<<<<<<<<<<<<<
    8083             :  * 
    8084             :  *         for dim, idx in enumerate(index):
    8085             :  */
    8086           0 :   __pyx_v_itemp = ((char *)__pyx_v_self->view.buf);
    8087             : 
    8088             :   /* "View.MemoryView":401
    8089             :  *         cdef char *itemp = <char *> self.view.buf
    8090             :  * 
    8091             :  *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
    8092             :  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
    8093             :  * 
    8094             :  */
    8095           0 :   __pyx_t_1 = 0;
    8096           0 :   if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
    8097           0 :     __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2);
    8098           0 :     __pyx_t_3 = 0;
    8099           0 :     __pyx_t_4 = NULL;
    8100             :   } else {
    8101           0 :     __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 401, __pyx_L1_error)
    8102           0 :     __Pyx_GOTREF(__pyx_t_2);
    8103           0 :     __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 401, __pyx_L1_error)
    8104             :   }
    8105           0 :   for (;;) {
    8106           0 :     if (likely(!__pyx_t_4)) {
    8107           0 :       if (likely(PyList_CheckExact(__pyx_t_2))) {
    8108             :         {
    8109           0 :           Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
    8110             :           #if !CYTHON_ASSUME_SAFE_MACROS
    8111             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error)
    8112             :           #endif
    8113           0 :           if (__pyx_t_3 >= __pyx_temp) break;
    8114             :         }
    8115             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    8116           0 :         __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(1, 401, __pyx_L1_error)
    8117             :         #else
    8118             :         __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error)
    8119             :         __Pyx_GOTREF(__pyx_t_5);
    8120             :         #endif
    8121             :       } else {
    8122             :         {
    8123           0 :           Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
    8124             :           #if !CYTHON_ASSUME_SAFE_MACROS
    8125             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error)
    8126             :           #endif
    8127           0 :           if (__pyx_t_3 >= __pyx_temp) break;
    8128             :         }
    8129             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    8130           0 :         __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(1, 401, __pyx_L1_error)
    8131             :         #else
    8132             :         __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error)
    8133             :         __Pyx_GOTREF(__pyx_t_5);
    8134             :         #endif
    8135             :       }
    8136             :     } else {
    8137           0 :       __pyx_t_5 = __pyx_t_4(__pyx_t_2);
    8138           0 :       if (unlikely(!__pyx_t_5)) {
    8139           0 :         PyObject* exc_type = PyErr_Occurred();
    8140           0 :         if (exc_type) {
    8141           0 :           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
    8142           0 :           else __PYX_ERR(1, 401, __pyx_L1_error)
    8143             :         }
    8144             :         break;
    8145             :       }
    8146           0 :       __Pyx_GOTREF(__pyx_t_5);
    8147             :     }
    8148           0 :     __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
    8149           0 :     __pyx_t_5 = 0;
    8150           0 :     __pyx_v_dim = __pyx_t_1;
    8151           0 :     __pyx_t_1 = (__pyx_t_1 + 1);
    8152             : 
    8153             :     /* "View.MemoryView":402
    8154             :  * 
    8155             :  *         for dim, idx in enumerate(index):
    8156             :  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)             # <<<<<<<<<<<<<<
    8157             :  * 
    8158             :  *         return itemp
    8159             :  */
    8160           0 :     __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 402, __pyx_L1_error)
    8161           0 :     __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 402, __pyx_L1_error)
    8162             :     __pyx_v_itemp = __pyx_t_7;
    8163             : 
    8164             :     /* "View.MemoryView":401
    8165             :  *         cdef char *itemp = <char *> self.view.buf
    8166             :  * 
    8167             :  *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
    8168             :  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
    8169             :  * 
    8170             :  */
    8171             :   }
    8172           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    8173             : 
    8174             :   /* "View.MemoryView":404
    8175             :  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
    8176             :  * 
    8177             :  *         return itemp             # <<<<<<<<<<<<<<
    8178             :  * 
    8179             :  * 
    8180             :  */
    8181           0 :   __pyx_r = __pyx_v_itemp;
    8182           0 :   goto __pyx_L0;
    8183             : 
    8184             :   /* "View.MemoryView":397
    8185             :  *                 PyThread_free_lock(self.lock)
    8186             :  * 
    8187             :  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
    8188             :  *         cdef Py_ssize_t dim
    8189             :  *         cdef char *itemp = <char *> self.view.buf
    8190             :  */
    8191             : 
    8192             :   /* function exit code */
    8193           0 :   __pyx_L1_error:;
    8194           0 :   __Pyx_XDECREF(__pyx_t_2);
    8195           0 :   __Pyx_XDECREF(__pyx_t_5);
    8196           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8197           0 :   __pyx_r = NULL;
    8198           0 :   __pyx_L0:;
    8199           0 :   __Pyx_XDECREF(__pyx_v_idx);
    8200           0 :   __Pyx_RefNannyFinishContext();
    8201           0 :   return __pyx_r;
    8202             : }
    8203             : 
    8204             : /* "View.MemoryView":407
    8205             :  * 
    8206             :  * 
    8207             :  *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
    8208             :  *         if index is Ellipsis:
    8209             :  *             return self
    8210             :  */
    8211             : 
    8212             : /* Python wrapper */
    8213             : static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
    8214           0 : static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
    8215           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    8216           0 :   PyObject *__pyx_r = 0;
    8217             :   __Pyx_RefNannyDeclarations
    8218           0 :   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
    8219           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    8220           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index));
    8221             : 
    8222             :   /* function exit code */
    8223           0 :   __Pyx_RefNannyFinishContext();
    8224           0 :   return __pyx_r;
    8225             : }
    8226             : 
    8227           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
    8228           0 :   PyObject *__pyx_v_have_slices = NULL;
    8229           0 :   PyObject *__pyx_v_indices = NULL;
    8230           0 :   char *__pyx_v_itemp;
    8231           0 :   PyObject *__pyx_r = NULL;
    8232             :   __Pyx_RefNannyDeclarations
    8233           0 :   int __pyx_t_1;
    8234           0 :   PyObject *__pyx_t_2 = NULL;
    8235           0 :   PyObject *__pyx_t_3 = NULL;
    8236           0 :   PyObject *__pyx_t_4 = NULL;
    8237           0 :   char *__pyx_t_5;
    8238           0 :   int __pyx_lineno = 0;
    8239           0 :   const char *__pyx_filename = NULL;
    8240           0 :   int __pyx_clineno = 0;
    8241           0 :   __Pyx_RefNannySetupContext("__getitem__", 1);
    8242             : 
    8243             :   /* "View.MemoryView":408
    8244             :  * 
    8245             :  *     def __getitem__(memoryview self, object index):
    8246             :  *         if index is Ellipsis:             # <<<<<<<<<<<<<<
    8247             :  *             return self
    8248             :  * 
    8249             :  */
    8250           0 :   __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis);
    8251           0 :   if (__pyx_t_1) {
    8252             : 
    8253             :     /* "View.MemoryView":409
    8254             :  *     def __getitem__(memoryview self, object index):
    8255             :  *         if index is Ellipsis:
    8256             :  *             return self             # <<<<<<<<<<<<<<
    8257             :  * 
    8258             :  *         have_slices, indices = _unellipsify(index, self.view.ndim)
    8259             :  */
    8260           0 :     __Pyx_XDECREF(__pyx_r);
    8261           0 :     __Pyx_INCREF((PyObject *)__pyx_v_self);
    8262           0 :     __pyx_r = ((PyObject *)__pyx_v_self);
    8263           0 :     goto __pyx_L0;
    8264             : 
    8265             :     /* "View.MemoryView":408
    8266             :  * 
    8267             :  *     def __getitem__(memoryview self, object index):
    8268             :  *         if index is Ellipsis:             # <<<<<<<<<<<<<<
    8269             :  *             return self
    8270             :  * 
    8271             :  */
    8272             :   }
    8273             : 
    8274             :   /* "View.MemoryView":411
    8275             :  *             return self
    8276             :  * 
    8277             :  *         have_slices, indices = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
    8278             :  * 
    8279             :  *         cdef char *itemp
    8280             :  */
    8281           0 :   __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 411, __pyx_L1_error)
    8282           0 :   __Pyx_GOTREF(__pyx_t_2);
    8283           0 :   if (likely(__pyx_t_2 != Py_None)) {
    8284           0 :     PyObject* sequence = __pyx_t_2;
    8285           0 :     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    8286           0 :     if (unlikely(size != 2)) {
    8287           0 :       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
    8288           0 :       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
    8289           0 :       __PYX_ERR(1, 411, __pyx_L1_error)
    8290             :     }
    8291             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    8292           0 :     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
    8293           0 :     __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    8294           0 :     __Pyx_INCREF(__pyx_t_3);
    8295           0 :     __Pyx_INCREF(__pyx_t_4);
    8296             :     #else
    8297             :     __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error)
    8298             :     __Pyx_GOTREF(__pyx_t_3);
    8299             :     __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 411, __pyx_L1_error)
    8300             :     __Pyx_GOTREF(__pyx_t_4);
    8301             :     #endif
    8302           0 :     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    8303             :   } else {
    8304           0 :     __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 411, __pyx_L1_error)
    8305             :   }
    8306           0 :   __pyx_v_have_slices = __pyx_t_3;
    8307           0 :   __pyx_t_3 = 0;
    8308           0 :   __pyx_v_indices = __pyx_t_4;
    8309           0 :   __pyx_t_4 = 0;
    8310             : 
    8311             :   /* "View.MemoryView":414
    8312             :  * 
    8313             :  *         cdef char *itemp
    8314             :  *         if have_slices:             # <<<<<<<<<<<<<<
    8315             :  *             return memview_slice(self, indices)
    8316             :  *         else:
    8317             :  */
    8318           0 :   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 414, __pyx_L1_error)
    8319           0 :   if (__pyx_t_1) {
    8320             : 
    8321             :     /* "View.MemoryView":415
    8322             :  *         cdef char *itemp
    8323             :  *         if have_slices:
    8324             :  *             return memview_slice(self, indices)             # <<<<<<<<<<<<<<
    8325             :  *         else:
    8326             :  *             itemp = self.get_item_pointer(indices)
    8327             :  */
    8328           0 :     __Pyx_XDECREF(__pyx_r);
    8329           0 :     __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 415, __pyx_L1_error)
    8330           0 :     __Pyx_GOTREF(__pyx_t_2);
    8331           0 :     __pyx_r = __pyx_t_2;
    8332           0 :     __pyx_t_2 = 0;
    8333           0 :     goto __pyx_L0;
    8334             : 
    8335             :     /* "View.MemoryView":414
    8336             :  * 
    8337             :  *         cdef char *itemp
    8338             :  *         if have_slices:             # <<<<<<<<<<<<<<
    8339             :  *             return memview_slice(self, indices)
    8340             :  *         else:
    8341             :  */
    8342             :   }
    8343             : 
    8344             :   /* "View.MemoryView":417
    8345             :  *             return memview_slice(self, indices)
    8346             :  *         else:
    8347             :  *             itemp = self.get_item_pointer(indices)             # <<<<<<<<<<<<<<
    8348             :  *             return self.convert_item_to_object(itemp)
    8349             :  * 
    8350             :  */
    8351             :   /*else*/ {
    8352           0 :     __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((char *)NULL))) __PYX_ERR(1, 417, __pyx_L1_error)
    8353           0 :     __pyx_v_itemp = __pyx_t_5;
    8354             : 
    8355             :     /* "View.MemoryView":418
    8356             :  *         else:
    8357             :  *             itemp = self.get_item_pointer(indices)
    8358             :  *             return self.convert_item_to_object(itemp)             # <<<<<<<<<<<<<<
    8359             :  * 
    8360             :  *     def __setitem__(memoryview self, object index, object value):
    8361             :  */
    8362           0 :     __Pyx_XDECREF(__pyx_r);
    8363           0 :     __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error)
    8364           0 :     __Pyx_GOTREF(__pyx_t_2);
    8365           0 :     __pyx_r = __pyx_t_2;
    8366           0 :     __pyx_t_2 = 0;
    8367           0 :     goto __pyx_L0;
    8368             :   }
    8369             : 
    8370             :   /* "View.MemoryView":407
    8371             :  * 
    8372             :  * 
    8373             :  *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
    8374             :  *         if index is Ellipsis:
    8375             :  *             return self
    8376             :  */
    8377             : 
    8378             :   /* function exit code */
    8379           0 :   __pyx_L1_error:;
    8380           0 :   __Pyx_XDECREF(__pyx_t_2);
    8381           0 :   __Pyx_XDECREF(__pyx_t_3);
    8382           0 :   __Pyx_XDECREF(__pyx_t_4);
    8383           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8384           0 :   __pyx_r = NULL;
    8385           0 :   __pyx_L0:;
    8386           0 :   __Pyx_XDECREF(__pyx_v_have_slices);
    8387           0 :   __Pyx_XDECREF(__pyx_v_indices);
    8388           0 :   __Pyx_XGIVEREF(__pyx_r);
    8389           0 :   __Pyx_RefNannyFinishContext();
    8390           0 :   return __pyx_r;
    8391             : }
    8392             : 
    8393             : /* "View.MemoryView":420
    8394             :  *             return self.convert_item_to_object(itemp)
    8395             :  * 
    8396             :  *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
    8397             :  *         if self.view.readonly:
    8398             :  *             raise TypeError, "Cannot assign to read-only memoryview"
    8399             :  */
    8400             : 
    8401             : /* Python wrapper */
    8402             : static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
    8403           0 : static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
    8404           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    8405           0 :   int __pyx_r;
    8406             :   __Pyx_RefNannyDeclarations
    8407           0 :   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
    8408           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    8409           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));
    8410             : 
    8411             :   /* function exit code */
    8412           0 :   __Pyx_RefNannyFinishContext();
    8413           0 :   return __pyx_r;
    8414             : }
    8415             : 
    8416           0 : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
    8417           0 :   PyObject *__pyx_v_have_slices = NULL;
    8418           0 :   PyObject *__pyx_v_obj = NULL;
    8419           0 :   int __pyx_r;
    8420             :   __Pyx_RefNannyDeclarations
    8421           0 :   PyObject *__pyx_t_1 = NULL;
    8422           0 :   PyObject *__pyx_t_2 = NULL;
    8423           0 :   PyObject *__pyx_t_3 = NULL;
    8424           0 :   int __pyx_t_4;
    8425           0 :   int __pyx_lineno = 0;
    8426           0 :   const char *__pyx_filename = NULL;
    8427           0 :   int __pyx_clineno = 0;
    8428           0 :   __Pyx_RefNannySetupContext("__setitem__", 0);
    8429           0 :   __Pyx_INCREF(__pyx_v_index);
    8430             : 
    8431             :   /* "View.MemoryView":421
    8432             :  * 
    8433             :  *     def __setitem__(memoryview self, object index, object value):
    8434             :  *         if self.view.readonly:             # <<<<<<<<<<<<<<
    8435             :  *             raise TypeError, "Cannot assign to read-only memoryview"
    8436             :  * 
    8437             :  */
    8438           0 :   if (unlikely(__pyx_v_self->view.readonly)) {
    8439             : 
    8440             :     /* "View.MemoryView":422
    8441             :  *     def __setitem__(memoryview self, object index, object value):
    8442             :  *         if self.view.readonly:
    8443             :  *             raise TypeError, "Cannot assign to read-only memoryview"             # <<<<<<<<<<<<<<
    8444             :  * 
    8445             :  *         have_slices, index = _unellipsify(index, self.view.ndim)
    8446             :  */
    8447           0 :     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_Cannot_assign_to_read_only_memor, 0, 0);
    8448           0 :     __PYX_ERR(1, 422, __pyx_L1_error)
    8449             : 
    8450             :     /* "View.MemoryView":421
    8451             :  * 
    8452             :  *     def __setitem__(memoryview self, object index, object value):
    8453             :  *         if self.view.readonly:             # <<<<<<<<<<<<<<
    8454             :  *             raise TypeError, "Cannot assign to read-only memoryview"
    8455             :  * 
    8456             :  */
    8457             :   }
    8458             : 
    8459             :   /* "View.MemoryView":424
    8460             :  *             raise TypeError, "Cannot assign to read-only memoryview"
    8461             :  * 
    8462             :  *         have_slices, index = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
    8463             :  * 
    8464             :  *         if have_slices:
    8465             :  */
    8466           0 :   __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 424, __pyx_L1_error)
    8467           0 :   __Pyx_GOTREF(__pyx_t_1);
    8468           0 :   if (likely(__pyx_t_1 != Py_None)) {
    8469           0 :     PyObject* sequence = __pyx_t_1;
    8470           0 :     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    8471           0 :     if (unlikely(size != 2)) {
    8472           0 :       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
    8473           0 :       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
    8474           0 :       __PYX_ERR(1, 424, __pyx_L1_error)
    8475             :     }
    8476             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    8477           0 :     __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
    8478           0 :     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    8479           0 :     __Pyx_INCREF(__pyx_t_2);
    8480           0 :     __Pyx_INCREF(__pyx_t_3);
    8481             :     #else
    8482             :     __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 424, __pyx_L1_error)
    8483             :     __Pyx_GOTREF(__pyx_t_2);
    8484             :     __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 424, __pyx_L1_error)
    8485             :     __Pyx_GOTREF(__pyx_t_3);
    8486             :     #endif
    8487           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    8488             :   } else {
    8489           0 :     __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 424, __pyx_L1_error)
    8490             :   }
    8491           0 :   __pyx_v_have_slices = __pyx_t_2;
    8492           0 :   __pyx_t_2 = 0;
    8493           0 :   __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
    8494           0 :   __pyx_t_3 = 0;
    8495             : 
    8496             :   /* "View.MemoryView":426
    8497             :  *         have_slices, index = _unellipsify(index, self.view.ndim)
    8498             :  * 
    8499             :  *         if have_slices:             # <<<<<<<<<<<<<<
    8500             :  *             obj = self.is_slice(value)
    8501             :  *             if obj is not None:
    8502             :  */
    8503           0 :   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 426, __pyx_L1_error)
    8504           0 :   if (__pyx_t_4) {
    8505             : 
    8506             :     /* "View.MemoryView":427
    8507             :  * 
    8508             :  *         if have_slices:
    8509             :  *             obj = self.is_slice(value)             # <<<<<<<<<<<<<<
    8510             :  *             if obj is not None:
    8511             :  *                 self.setitem_slice_assignment(self[index], obj)
    8512             :  */
    8513           0 :     __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error)
    8514           0 :     __Pyx_GOTREF(__pyx_t_1);
    8515           0 :     __pyx_v_obj = __pyx_t_1;
    8516           0 :     __pyx_t_1 = 0;
    8517             : 
    8518             :     /* "View.MemoryView":428
    8519             :  *         if have_slices:
    8520             :  *             obj = self.is_slice(value)
    8521             :  *             if obj is not None:             # <<<<<<<<<<<<<<
    8522             :  *                 self.setitem_slice_assignment(self[index], obj)
    8523             :  *             else:
    8524             :  */
    8525           0 :     __pyx_t_4 = (__pyx_v_obj != Py_None);
    8526           0 :     if (__pyx_t_4) {
    8527             : 
    8528             :       /* "View.MemoryView":429
    8529             :  *             obj = self.is_slice(value)
    8530             :  *             if obj is not None:
    8531             :  *                 self.setitem_slice_assignment(self[index], obj)             # <<<<<<<<<<<<<<
    8532             :  *             else:
    8533             :  *                 self.setitem_slice_assign_scalar(self[index], value)
    8534             :  */
    8535           0 :       __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 429, __pyx_L1_error)
    8536           0 :       __Pyx_GOTREF(__pyx_t_1);
    8537           0 :       __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 429, __pyx_L1_error)
    8538           0 :       __Pyx_GOTREF(__pyx_t_3);
    8539           0 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    8540           0 :       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    8541             : 
    8542             :       /* "View.MemoryView":428
    8543             :  *         if have_slices:
    8544             :  *             obj = self.is_slice(value)
    8545             :  *             if obj is not None:             # <<<<<<<<<<<<<<
    8546             :  *                 self.setitem_slice_assignment(self[index], obj)
    8547             :  *             else:
    8548             :  */
    8549           0 :       goto __pyx_L5;
    8550             :     }
    8551             : 
    8552             :     /* "View.MemoryView":431
    8553             :  *                 self.setitem_slice_assignment(self[index], obj)
    8554             :  *             else:
    8555             :  *                 self.setitem_slice_assign_scalar(self[index], value)             # <<<<<<<<<<<<<<
    8556             :  *         else:
    8557             :  *             self.setitem_indexed(index, value)
    8558             :  */
    8559             :     /*else*/ {
    8560           0 :       __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error)
    8561           0 :       __Pyx_GOTREF(__pyx_t_3);
    8562           0 :       if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 431, __pyx_L1_error)
    8563           0 :       __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error)
    8564           0 :       __Pyx_GOTREF(__pyx_t_1);
    8565           0 :       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    8566           0 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    8567             :     }
    8568           0 :     __pyx_L5:;
    8569             : 
    8570             :     /* "View.MemoryView":426
    8571             :  *         have_slices, index = _unellipsify(index, self.view.ndim)
    8572             :  * 
    8573             :  *         if have_slices:             # <<<<<<<<<<<<<<
    8574             :  *             obj = self.is_slice(value)
    8575             :  *             if obj is not None:
    8576             :  */
    8577           0 :     goto __pyx_L4;
    8578             :   }
    8579             : 
    8580             :   /* "View.MemoryView":433
    8581             :  *                 self.setitem_slice_assign_scalar(self[index], value)
    8582             :  *         else:
    8583             :  *             self.setitem_indexed(index, value)             # <<<<<<<<<<<<<<
    8584             :  * 
    8585             :  *     cdef is_slice(self, obj):
    8586             :  */
    8587             :   /*else*/ {
    8588           0 :     __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 433, __pyx_L1_error)
    8589           0 :     __Pyx_GOTREF(__pyx_t_1);
    8590           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    8591             :   }
    8592           0 :   __pyx_L4:;
    8593             : 
    8594             :   /* "View.MemoryView":420
    8595             :  *             return self.convert_item_to_object(itemp)
    8596             :  * 
    8597             :  *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
    8598             :  *         if self.view.readonly:
    8599             :  *             raise TypeError, "Cannot assign to read-only memoryview"
    8600             :  */
    8601             : 
    8602             :   /* function exit code */
    8603           0 :   __pyx_r = 0;
    8604           0 :   goto __pyx_L0;
    8605           0 :   __pyx_L1_error:;
    8606           0 :   __Pyx_XDECREF(__pyx_t_1);
    8607           0 :   __Pyx_XDECREF(__pyx_t_2);
    8608           0 :   __Pyx_XDECREF(__pyx_t_3);
    8609           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8610           0 :   __pyx_r = -1;
    8611           0 :   __pyx_L0:;
    8612           0 :   __Pyx_XDECREF(__pyx_v_have_slices);
    8613           0 :   __Pyx_XDECREF(__pyx_v_obj);
    8614           0 :   __Pyx_XDECREF(__pyx_v_index);
    8615           0 :   __Pyx_RefNannyFinishContext();
    8616           0 :   return __pyx_r;
    8617             : }
    8618             : 
    8619             : /* "View.MemoryView":435
    8620             :  *             self.setitem_indexed(index, value)
    8621             :  * 
    8622             :  *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
    8623             :  *         if not isinstance(obj, memoryview):
    8624             :  *             try:
    8625             :  */
    8626             : 
    8627           0 : static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) {
    8628           0 :   PyObject *__pyx_r = NULL;
    8629             :   __Pyx_RefNannyDeclarations
    8630           0 :   int __pyx_t_1;
    8631           0 :   int __pyx_t_2;
    8632           0 :   PyObject *__pyx_t_3 = NULL;
    8633           0 :   PyObject *__pyx_t_4 = NULL;
    8634           0 :   PyObject *__pyx_t_5 = NULL;
    8635           0 :   PyObject *__pyx_t_6 = NULL;
    8636           0 :   PyObject *__pyx_t_7 = NULL;
    8637           0 :   PyObject *__pyx_t_8 = NULL;
    8638           0 :   int __pyx_t_9;
    8639           0 :   int __pyx_lineno = 0;
    8640           0 :   const char *__pyx_filename = NULL;
    8641           0 :   int __pyx_clineno = 0;
    8642           0 :   __Pyx_RefNannySetupContext("is_slice", 0);
    8643           0 :   __Pyx_INCREF(__pyx_v_obj);
    8644             : 
    8645             :   /* "View.MemoryView":436
    8646             :  * 
    8647             :  *     cdef is_slice(self, obj):
    8648             :  *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
    8649             :  *             try:
    8650             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8651             :  */
    8652           0 :   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); 
    8653           0 :   __pyx_t_2 = (!__pyx_t_1);
    8654           0 :   if (__pyx_t_2) {
    8655             : 
    8656             :     /* "View.MemoryView":437
    8657             :  *     cdef is_slice(self, obj):
    8658             :  *         if not isinstance(obj, memoryview):
    8659             :  *             try:             # <<<<<<<<<<<<<<
    8660             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8661             :  *                                  self.dtype_is_object)
    8662             :  */
    8663             :     {
    8664           0 :       __Pyx_PyThreadState_declare
    8665           0 :       __Pyx_PyThreadState_assign
    8666           0 :       __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    8667           0 :       __Pyx_XGOTREF(__pyx_t_3);
    8668           0 :       __Pyx_XGOTREF(__pyx_t_4);
    8669           0 :       __Pyx_XGOTREF(__pyx_t_5);
    8670             :       /*try:*/ {
    8671             : 
    8672             :         /* "View.MemoryView":438
    8673             :  *         if not isinstance(obj, memoryview):
    8674             :  *             try:
    8675             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
    8676             :  *                                  self.dtype_is_object)
    8677             :  *             except TypeError:
    8678             :  */
    8679           0 :         __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error)
    8680           0 :         __Pyx_GOTREF(__pyx_t_6);
    8681             : 
    8682             :         /* "View.MemoryView":439
    8683             :  *             try:
    8684             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8685             :  *                                  self.dtype_is_object)             # <<<<<<<<<<<<<<
    8686             :  *             except TypeError:
    8687             :  *                 return None
    8688             :  */
    8689           0 :         __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 439, __pyx_L4_error)
    8690           0 :         __Pyx_GOTREF(__pyx_t_7);
    8691             : 
    8692             :         /* "View.MemoryView":438
    8693             :  *         if not isinstance(obj, memoryview):
    8694             :  *             try:
    8695             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
    8696             :  *                                  self.dtype_is_object)
    8697             :  *             except TypeError:
    8698             :  */
    8699           0 :         __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 438, __pyx_L4_error)
    8700           0 :         __Pyx_GOTREF(__pyx_t_8);
    8701           0 :         __Pyx_INCREF(__pyx_v_obj);
    8702           0 :         __Pyx_GIVEREF(__pyx_v_obj);
    8703           0 :         if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj)) __PYX_ERR(1, 438, __pyx_L4_error);
    8704           0 :         __Pyx_GIVEREF(__pyx_t_6);
    8705           0 :         if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error);
    8706           0 :         __Pyx_GIVEREF(__pyx_t_7);
    8707           0 :         if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7)) __PYX_ERR(1, 438, __pyx_L4_error);
    8708           0 :         __pyx_t_6 = 0;
    8709           0 :         __pyx_t_7 = 0;
    8710           0 :         __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 438, __pyx_L4_error)
    8711           0 :         __Pyx_GOTREF(__pyx_t_7);
    8712           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    8713           0 :         __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7);
    8714           0 :         __pyx_t_7 = 0;
    8715             : 
    8716             :         /* "View.MemoryView":437
    8717             :  *     cdef is_slice(self, obj):
    8718             :  *         if not isinstance(obj, memoryview):
    8719             :  *             try:             # <<<<<<<<<<<<<<
    8720             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8721             :  *                                  self.dtype_is_object)
    8722             :  */
    8723             :       }
    8724           0 :       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    8725           0 :       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    8726           0 :       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    8727           0 :       goto __pyx_L9_try_end;
    8728           0 :       __pyx_L4_error:;
    8729           0 :       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    8730           0 :       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    8731           0 :       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    8732             : 
    8733             :       /* "View.MemoryView":440
    8734             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8735             :  *                                  self.dtype_is_object)
    8736             :  *             except TypeError:             # <<<<<<<<<<<<<<
    8737             :  *                 return None
    8738             :  * 
    8739             :  */
    8740           0 :       __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    8741           0 :       if (__pyx_t_9) {
    8742           0 :         __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8743           0 :         if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 440, __pyx_L6_except_error)
    8744           0 :         __Pyx_XGOTREF(__pyx_t_7);
    8745           0 :         __Pyx_XGOTREF(__pyx_t_8);
    8746           0 :         __Pyx_XGOTREF(__pyx_t_6);
    8747             : 
    8748             :         /* "View.MemoryView":441
    8749             :  *                                  self.dtype_is_object)
    8750             :  *             except TypeError:
    8751             :  *                 return None             # <<<<<<<<<<<<<<
    8752             :  * 
    8753             :  *         return obj
    8754             :  */
    8755           0 :         __Pyx_XDECREF(__pyx_r);
    8756           0 :         __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    8757           0 :         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    8758           0 :         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    8759           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    8760           0 :         goto __pyx_L7_except_return;
    8761             :       }
    8762           0 :       goto __pyx_L6_except_error;
    8763             : 
    8764             :       /* "View.MemoryView":437
    8765             :  *     cdef is_slice(self, obj):
    8766             :  *         if not isinstance(obj, memoryview):
    8767             :  *             try:             # <<<<<<<<<<<<<<
    8768             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8769             :  *                                  self.dtype_is_object)
    8770             :  */
    8771           0 :       __pyx_L6_except_error:;
    8772           0 :       __Pyx_XGIVEREF(__pyx_t_3);
    8773           0 :       __Pyx_XGIVEREF(__pyx_t_4);
    8774           0 :       __Pyx_XGIVEREF(__pyx_t_5);
    8775           0 :       __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    8776           0 :       goto __pyx_L1_error;
    8777           0 :       __pyx_L7_except_return:;
    8778           0 :       __Pyx_XGIVEREF(__pyx_t_3);
    8779           0 :       __Pyx_XGIVEREF(__pyx_t_4);
    8780           0 :       __Pyx_XGIVEREF(__pyx_t_5);
    8781           0 :       __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    8782           0 :       goto __pyx_L0;
    8783           0 :       __pyx_L9_try_end:;
    8784             :     }
    8785             : 
    8786             :     /* "View.MemoryView":436
    8787             :  * 
    8788             :  *     cdef is_slice(self, obj):
    8789             :  *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
    8790             :  *             try:
    8791             :  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
    8792             :  */
    8793             :   }
    8794             : 
    8795             :   /* "View.MemoryView":443
    8796             :  *                 return None
    8797             :  * 
    8798             :  *         return obj             # <<<<<<<<<<<<<<
    8799             :  * 
    8800             :  *     cdef setitem_slice_assignment(self, dst, src):
    8801             :  */
    8802           0 :   __Pyx_XDECREF(__pyx_r);
    8803           0 :   __Pyx_INCREF(__pyx_v_obj);
    8804           0 :   __pyx_r = __pyx_v_obj;
    8805           0 :   goto __pyx_L0;
    8806             : 
    8807             :   /* "View.MemoryView":435
    8808             :  *             self.setitem_indexed(index, value)
    8809             :  * 
    8810             :  *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
    8811             :  *         if not isinstance(obj, memoryview):
    8812             :  *             try:
    8813             :  */
    8814             : 
    8815             :   /* function exit code */
    8816           0 :   __pyx_L1_error:;
    8817           0 :   __Pyx_XDECREF(__pyx_t_6);
    8818           0 :   __Pyx_XDECREF(__pyx_t_7);
    8819           0 :   __Pyx_XDECREF(__pyx_t_8);
    8820           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8821           0 :   __pyx_r = 0;
    8822           0 :   __pyx_L0:;
    8823           0 :   __Pyx_XDECREF(__pyx_v_obj);
    8824           0 :   __Pyx_XGIVEREF(__pyx_r);
    8825           0 :   __Pyx_RefNannyFinishContext();
    8826           0 :   return __pyx_r;
    8827             : }
    8828             : 
    8829             : /* "View.MemoryView":445
    8830             :  *         return obj
    8831             :  * 
    8832             :  *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
    8833             :  *         cdef __Pyx_memviewslice dst_slice
    8834             :  *         cdef __Pyx_memviewslice src_slice
    8835             :  */
    8836             : 
    8837           0 : static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) {
    8838           0 :   __Pyx_memviewslice __pyx_v_dst_slice;
    8839           0 :   __Pyx_memviewslice __pyx_v_src_slice;
    8840           0 :   __Pyx_memviewslice __pyx_v_msrc;
    8841           0 :   __Pyx_memviewslice __pyx_v_mdst;
    8842           0 :   PyObject *__pyx_r = NULL;
    8843             :   __Pyx_RefNannyDeclarations
    8844           0 :   __Pyx_memviewslice *__pyx_t_1;
    8845           0 :   PyObject *__pyx_t_2 = NULL;
    8846           0 :   int __pyx_t_3;
    8847           0 :   int __pyx_t_4;
    8848           0 :   int __pyx_t_5;
    8849           0 :   int __pyx_lineno = 0;
    8850           0 :   const char *__pyx_filename = NULL;
    8851           0 :   int __pyx_clineno = 0;
    8852           0 :   __Pyx_RefNannySetupContext("setitem_slice_assignment", 1);
    8853             : 
    8854             :   /* "View.MemoryView":448
    8855             :  *         cdef __Pyx_memviewslice dst_slice
    8856             :  *         cdef __Pyx_memviewslice src_slice
    8857             :  *         cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0]             # <<<<<<<<<<<<<<
    8858             :  *         cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0]
    8859             :  * 
    8860             :  */
    8861           0 :   if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 448, __pyx_L1_error)
    8862           0 :   __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 448, __pyx_L1_error)
    8863           0 :   __pyx_v_msrc = (__pyx_t_1[0]);
    8864             : 
    8865             :   /* "View.MemoryView":449
    8866             :  *         cdef __Pyx_memviewslice src_slice
    8867             :  *         cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0]
    8868             :  *         cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0]             # <<<<<<<<<<<<<<
    8869             :  * 
    8870             :  *         memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object)
    8871             :  */
    8872           0 :   if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error)
    8873           0 :   __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 449, __pyx_L1_error)
    8874           0 :   __pyx_v_mdst = (__pyx_t_1[0]);
    8875             : 
    8876             :   /* "View.MemoryView":451
    8877             :  *         cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0]
    8878             :  * 
    8879             :  *         memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object)             # <<<<<<<<<<<<<<
    8880             :  * 
    8881             :  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
    8882             :  */
    8883           0 :   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error)
    8884           0 :   __Pyx_GOTREF(__pyx_t_2);
    8885           0 :   __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error)
    8886           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    8887           0 :   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error)
    8888           0 :   __Pyx_GOTREF(__pyx_t_2);
    8889           0 :   __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error)
    8890           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    8891           0 :   __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 451, __pyx_L1_error)
    8892             : 
    8893             :   /* "View.MemoryView":445
    8894             :  *         return obj
    8895             :  * 
    8896             :  *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
    8897             :  *         cdef __Pyx_memviewslice dst_slice
    8898             :  *         cdef __Pyx_memviewslice src_slice
    8899             :  */
    8900             : 
    8901             :   /* function exit code */
    8902           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    8903           0 :   goto __pyx_L0;
    8904           0 :   __pyx_L1_error:;
    8905           0 :   __Pyx_XDECREF(__pyx_t_2);
    8906           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
    8907           0 :   __pyx_r = 0;
    8908           0 :   __pyx_L0:;
    8909           0 :   __Pyx_XGIVEREF(__pyx_r);
    8910           0 :   __Pyx_RefNannyFinishContext();
    8911           0 :   return __pyx_r;
    8912             : }
    8913             : 
    8914             : /* "View.MemoryView":453
    8915             :  *         memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object)
    8916             :  * 
    8917             :  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
    8918             :  *         cdef int array[128]
    8919             :  *         cdef void *tmp = NULL
    8920             :  */
    8921             : 
    8922           0 : static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) {
    8923           0 :   int __pyx_v_array[0x80];
    8924           0 :   void *__pyx_v_tmp;
    8925           0 :   void *__pyx_v_item;
    8926           0 :   __Pyx_memviewslice *__pyx_v_dst_slice;
    8927           0 :   __Pyx_memviewslice __pyx_v_tmp_slice;
    8928           0 :   PyObject *__pyx_r = NULL;
    8929             :   __Pyx_RefNannyDeclarations
    8930           0 :   __Pyx_memviewslice *__pyx_t_1;
    8931           0 :   int __pyx_t_2;
    8932           0 :   PyObject *__pyx_t_3 = NULL;
    8933           0 :   int __pyx_t_4;
    8934           0 :   int __pyx_t_5;
    8935           0 :   char const *__pyx_t_6;
    8936           0 :   PyObject *__pyx_t_7 = NULL;
    8937           0 :   PyObject *__pyx_t_8 = NULL;
    8938           0 :   PyObject *__pyx_t_9 = NULL;
    8939           0 :   PyObject *__pyx_t_10 = NULL;
    8940           0 :   PyObject *__pyx_t_11 = NULL;
    8941           0 :   PyObject *__pyx_t_12 = NULL;
    8942           0 :   int __pyx_lineno = 0;
    8943           0 :   const char *__pyx_filename = NULL;
    8944           0 :   int __pyx_clineno = 0;
    8945           0 :   __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 1);
    8946             : 
    8947             :   /* "View.MemoryView":455
    8948             :  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
    8949             :  *         cdef int array[128]
    8950             :  *         cdef void *tmp = NULL             # <<<<<<<<<<<<<<
    8951             :  *         cdef void *item
    8952             :  * 
    8953             :  */
    8954           0 :   __pyx_v_tmp = NULL;
    8955             : 
    8956             :   /* "View.MemoryView":460
    8957             :  *         cdef __Pyx_memviewslice *dst_slice
    8958             :  *         cdef __Pyx_memviewslice tmp_slice
    8959             :  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)             # <<<<<<<<<<<<<<
    8960             :  * 
    8961             :  *         if <size_t>self.view.itemsize > sizeof(array):
    8962             :  */
    8963           0 :   __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 460, __pyx_L1_error)
    8964           0 :   __pyx_v_dst_slice = __pyx_t_1;
    8965             : 
    8966             :   /* "View.MemoryView":462
    8967             :  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
    8968             :  * 
    8969             :  *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
    8970             :  *             tmp = PyMem_Malloc(self.view.itemsize)
    8971             :  *             if tmp == NULL:
    8972             :  */
    8973           0 :   __pyx_t_2 = (((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array)));
    8974           0 :   if (__pyx_t_2) {
    8975             : 
    8976             :     /* "View.MemoryView":463
    8977             :  * 
    8978             :  *         if <size_t>self.view.itemsize > sizeof(array):
    8979             :  *             tmp = PyMem_Malloc(self.view.itemsize)             # <<<<<<<<<<<<<<
    8980             :  *             if tmp == NULL:
    8981             :  *                 raise MemoryError
    8982             :  */
    8983           0 :     __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize);
    8984             : 
    8985             :     /* "View.MemoryView":464
    8986             :  *         if <size_t>self.view.itemsize > sizeof(array):
    8987             :  *             tmp = PyMem_Malloc(self.view.itemsize)
    8988             :  *             if tmp == NULL:             # <<<<<<<<<<<<<<
    8989             :  *                 raise MemoryError
    8990             :  *             item = tmp
    8991             :  */
    8992           0 :     __pyx_t_2 = (__pyx_v_tmp == NULL);
    8993           0 :     if (unlikely(__pyx_t_2)) {
    8994             : 
    8995             :       /* "View.MemoryView":465
    8996             :  *             tmp = PyMem_Malloc(self.view.itemsize)
    8997             :  *             if tmp == NULL:
    8998             :  *                 raise MemoryError             # <<<<<<<<<<<<<<
    8999             :  *             item = tmp
    9000             :  *         else:
    9001             :  */
    9002           0 :       PyErr_NoMemory(); __PYX_ERR(1, 465, __pyx_L1_error)
    9003             : 
    9004             :       /* "View.MemoryView":464
    9005             :  *         if <size_t>self.view.itemsize > sizeof(array):
    9006             :  *             tmp = PyMem_Malloc(self.view.itemsize)
    9007             :  *             if tmp == NULL:             # <<<<<<<<<<<<<<
    9008             :  *                 raise MemoryError
    9009             :  *             item = tmp
    9010             :  */
    9011             :     }
    9012             : 
    9013             :     /* "View.MemoryView":466
    9014             :  *             if tmp == NULL:
    9015             :  *                 raise MemoryError
    9016             :  *             item = tmp             # <<<<<<<<<<<<<<
    9017             :  *         else:
    9018             :  *             item = <void *> array
    9019             :  */
    9020           0 :     __pyx_v_item = __pyx_v_tmp;
    9021             : 
    9022             :     /* "View.MemoryView":462
    9023             :  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
    9024             :  * 
    9025             :  *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
    9026             :  *             tmp = PyMem_Malloc(self.view.itemsize)
    9027             :  *             if tmp == NULL:
    9028             :  */
    9029           0 :     goto __pyx_L3;
    9030             :   }
    9031             : 
    9032             :   /* "View.MemoryView":468
    9033             :  *             item = tmp
    9034             :  *         else:
    9035             :  *             item = <void *> array             # <<<<<<<<<<<<<<
    9036             :  * 
    9037             :  *         try:
    9038             :  */
    9039             :   /*else*/ {
    9040             :     __pyx_v_item = ((void *)__pyx_v_array);
    9041             :   }
    9042           0 :   __pyx_L3:;
    9043             : 
    9044             :   /* "View.MemoryView":470
    9045             :  *             item = <void *> array
    9046             :  * 
    9047             :  *         try:             # <<<<<<<<<<<<<<
    9048             :  *             if self.dtype_is_object:
    9049             :  *                 (<PyObject **> item)[0] = <PyObject *> value
    9050             :  */
    9051             :   /*try:*/ {
    9052             : 
    9053             :     /* "View.MemoryView":471
    9054             :  * 
    9055             :  *         try:
    9056             :  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
    9057             :  *                 (<PyObject **> item)[0] = <PyObject *> value
    9058             :  *             else:
    9059             :  */
    9060           0 :     if (__pyx_v_self->dtype_is_object) {
    9061             : 
    9062             :       /* "View.MemoryView":472
    9063             :  *         try:
    9064             :  *             if self.dtype_is_object:
    9065             :  *                 (<PyObject **> item)[0] = <PyObject *> value             # <<<<<<<<<<<<<<
    9066             :  *             else:
    9067             :  *                 self.assign_item_from_object(<char *> item, value)
    9068             :  */
    9069           0 :       (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value);
    9070             : 
    9071             :       /* "View.MemoryView":471
    9072             :  * 
    9073             :  *         try:
    9074             :  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
    9075             :  *                 (<PyObject **> item)[0] = <PyObject *> value
    9076             :  *             else:
    9077             :  */
    9078           0 :       goto __pyx_L8;
    9079             :     }
    9080             : 
    9081             :     /* "View.MemoryView":474
    9082             :  *                 (<PyObject **> item)[0] = <PyObject *> value
    9083             :  *             else:
    9084             :  *                 self.assign_item_from_object(<char *> item, value)             # <<<<<<<<<<<<<<
    9085             :  * 
    9086             :  * 
    9087             :  */
    9088             :     /*else*/ {
    9089           0 :       __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 474, __pyx_L6_error)
    9090           0 :       __Pyx_GOTREF(__pyx_t_3);
    9091           0 :       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    9092             :     }
    9093           0 :     __pyx_L8:;
    9094             : 
    9095             :     /* "View.MemoryView":478
    9096             :  * 
    9097             :  * 
    9098             :  *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
    9099             :  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
    9100             :  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
    9101             :  */
    9102           0 :     __pyx_t_2 = (__pyx_v_self->view.suboffsets != NULL);
    9103           0 :     if (__pyx_t_2) {
    9104             : 
    9105             :       /* "View.MemoryView":479
    9106             :  * 
    9107             :  *             if self.view.suboffsets != NULL:
    9108             :  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)             # <<<<<<<<<<<<<<
    9109             :  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
    9110             :  *                                 item, self.dtype_is_object)
    9111             :  */
    9112           0 :       __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 479, __pyx_L6_error)
    9113             : 
    9114             :       /* "View.MemoryView":478
    9115             :  * 
    9116             :  * 
    9117             :  *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
    9118             :  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
    9119             :  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
    9120             :  */
    9121             :     }
    9122             : 
    9123             :     /* "View.MemoryView":480
    9124             :  *             if self.view.suboffsets != NULL:
    9125             :  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
    9126             :  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,             # <<<<<<<<<<<<<<
    9127             :  *                                 item, self.dtype_is_object)
    9128             :  *         finally:
    9129             :  */
    9130           0 :     __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object);
    9131             :   }
    9132             : 
    9133             :   /* "View.MemoryView":483
    9134             :  *                                 item, self.dtype_is_object)
    9135             :  *         finally:
    9136             :  *             PyMem_Free(tmp)             # <<<<<<<<<<<<<<
    9137             :  * 
    9138             :  *     cdef setitem_indexed(self, index, value):
    9139             :  */
    9140             :   /*finally:*/ {
    9141             :     /*normal exit:*/{
    9142           0 :       PyMem_Free(__pyx_v_tmp);
    9143           0 :       goto __pyx_L7;
    9144             :     }
    9145           0 :     __pyx_L6_error:;
    9146             :     /*exception exit:*/{
    9147           0 :       __Pyx_PyThreadState_declare
    9148           0 :       __Pyx_PyThreadState_assign
    9149           0 :       __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
    9150           0 :       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    9151           0 :       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
    9152           0 :       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
    9153           0 :       __Pyx_XGOTREF(__pyx_t_7);
    9154           0 :       __Pyx_XGOTREF(__pyx_t_8);
    9155           0 :       __Pyx_XGOTREF(__pyx_t_9);
    9156           0 :       __Pyx_XGOTREF(__pyx_t_10);
    9157           0 :       __Pyx_XGOTREF(__pyx_t_11);
    9158           0 :       __Pyx_XGOTREF(__pyx_t_12);
    9159           0 :       __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
    9160             :       {
    9161           0 :         PyMem_Free(__pyx_v_tmp);
    9162             :       }
    9163           0 :       if (PY_MAJOR_VERSION >= 3) {
    9164           0 :         __Pyx_XGIVEREF(__pyx_t_10);
    9165           0 :         __Pyx_XGIVEREF(__pyx_t_11);
    9166           0 :         __Pyx_XGIVEREF(__pyx_t_12);
    9167           0 :         __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
    9168             :       }
    9169           0 :       __Pyx_XGIVEREF(__pyx_t_7);
    9170           0 :       __Pyx_XGIVEREF(__pyx_t_8);
    9171           0 :       __Pyx_XGIVEREF(__pyx_t_9);
    9172           0 :       __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
    9173           0 :       __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
    9174           0 :       __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
    9175           0 :       goto __pyx_L1_error;
    9176             :     }
    9177           0 :     __pyx_L7:;
    9178             :   }
    9179             : 
    9180             :   /* "View.MemoryView":453
    9181             :  *         memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object)
    9182             :  * 
    9183             :  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
    9184             :  *         cdef int array[128]
    9185             :  *         cdef void *tmp = NULL
    9186             :  */
    9187             : 
    9188             :   /* function exit code */
    9189           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    9190           0 :   goto __pyx_L0;
    9191           0 :   __pyx_L1_error:;
    9192           0 :   __Pyx_XDECREF(__pyx_t_3);
    9193           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
    9194           0 :   __pyx_r = 0;
    9195           0 :   __pyx_L0:;
    9196           0 :   __Pyx_XGIVEREF(__pyx_r);
    9197           0 :   __Pyx_RefNannyFinishContext();
    9198           0 :   return __pyx_r;
    9199             : }
    9200             : 
    9201             : /* "View.MemoryView":485
    9202             :  *             PyMem_Free(tmp)
    9203             :  * 
    9204             :  *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
    9205             :  *         cdef char *itemp = self.get_item_pointer(index)
    9206             :  *         self.assign_item_from_object(itemp, value)
    9207             :  */
    9208             : 
    9209           0 : static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
    9210           0 :   char *__pyx_v_itemp;
    9211           0 :   PyObject *__pyx_r = NULL;
    9212             :   __Pyx_RefNannyDeclarations
    9213           0 :   char *__pyx_t_1;
    9214           0 :   PyObject *__pyx_t_2 = NULL;
    9215           0 :   int __pyx_lineno = 0;
    9216           0 :   const char *__pyx_filename = NULL;
    9217           0 :   int __pyx_clineno = 0;
    9218           0 :   __Pyx_RefNannySetupContext("setitem_indexed", 1);
    9219             : 
    9220             :   /* "View.MemoryView":486
    9221             :  * 
    9222             :  *     cdef setitem_indexed(self, index, value):
    9223             :  *         cdef char *itemp = self.get_item_pointer(index)             # <<<<<<<<<<<<<<
    9224             :  *         self.assign_item_from_object(itemp, value)
    9225             :  * 
    9226             :  */
    9227           0 :   __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 486, __pyx_L1_error)
    9228           0 :   __pyx_v_itemp = __pyx_t_1;
    9229             : 
    9230             :   /* "View.MemoryView":487
    9231             :  *     cdef setitem_indexed(self, index, value):
    9232             :  *         cdef char *itemp = self.get_item_pointer(index)
    9233             :  *         self.assign_item_from_object(itemp, value)             # <<<<<<<<<<<<<<
    9234             :  * 
    9235             :  *     cdef convert_item_to_object(self, char *itemp):
    9236             :  */
    9237           0 :   __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 487, __pyx_L1_error)
    9238           0 :   __Pyx_GOTREF(__pyx_t_2);
    9239           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    9240             : 
    9241             :   /* "View.MemoryView":485
    9242             :  *             PyMem_Free(tmp)
    9243             :  * 
    9244             :  *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
    9245             :  *         cdef char *itemp = self.get_item_pointer(index)
    9246             :  *         self.assign_item_from_object(itemp, value)
    9247             :  */
    9248             : 
    9249             :   /* function exit code */
    9250           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    9251           0 :   goto __pyx_L0;
    9252           0 :   __pyx_L1_error:;
    9253           0 :   __Pyx_XDECREF(__pyx_t_2);
    9254           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
    9255           0 :   __pyx_r = 0;
    9256           0 :   __pyx_L0:;
    9257           0 :   __Pyx_XGIVEREF(__pyx_r);
    9258           0 :   __Pyx_RefNannyFinishContext();
    9259           0 :   return __pyx_r;
    9260             : }
    9261             : 
    9262             : /* "View.MemoryView":489
    9263             :  *         self.assign_item_from_object(itemp, value)
    9264             :  * 
    9265             :  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
    9266             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9267             :  *         know how to convert the type"""
    9268             :  */
    9269             : 
    9270           0 : static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) {
    9271           0 :   PyObject *__pyx_v_struct = NULL;
    9272           0 :   PyObject *__pyx_v_bytesitem = 0;
    9273           0 :   PyObject *__pyx_v_result = NULL;
    9274           0 :   PyObject *__pyx_r = NULL;
    9275             :   __Pyx_RefNannyDeclarations
    9276           0 :   PyObject *__pyx_t_1 = NULL;
    9277           0 :   PyObject *__pyx_t_2 = NULL;
    9278           0 :   PyObject *__pyx_t_3 = NULL;
    9279           0 :   PyObject *__pyx_t_4 = NULL;
    9280           0 :   PyObject *__pyx_t_5 = NULL;
    9281           0 :   PyObject *__pyx_t_6 = NULL;
    9282           0 :   PyObject *__pyx_t_7 = NULL;
    9283           0 :   unsigned int __pyx_t_8;
    9284           0 :   Py_ssize_t __pyx_t_9;
    9285           0 :   int __pyx_t_10;
    9286           0 :   int __pyx_t_11;
    9287           0 :   int __pyx_lineno = 0;
    9288           0 :   const char *__pyx_filename = NULL;
    9289           0 :   int __pyx_clineno = 0;
    9290           0 :   __Pyx_RefNannySetupContext("convert_item_to_object", 1);
    9291             : 
    9292             :   /* "View.MemoryView":492
    9293             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9294             :  *         know how to convert the type"""
    9295             :  *         import struct             # <<<<<<<<<<<<<<
    9296             :  *         cdef bytes bytesitem
    9297             :  * 
    9298             :  */
    9299           0 :   __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 492, __pyx_L1_error)
    9300           0 :   __Pyx_GOTREF(__pyx_t_1);
    9301           0 :   __pyx_v_struct = __pyx_t_1;
    9302           0 :   __pyx_t_1 = 0;
    9303             : 
    9304             :   /* "View.MemoryView":495
    9305             :  *         cdef bytes bytesitem
    9306             :  * 
    9307             :  *         bytesitem = itemp[:self.view.itemsize]             # <<<<<<<<<<<<<<
    9308             :  *         try:
    9309             :  *             result = struct.unpack(self.view.format, bytesitem)
    9310             :  */
    9311           0 :   __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 495, __pyx_L1_error)
    9312           0 :   __Pyx_GOTREF(__pyx_t_1);
    9313           0 :   __pyx_v_bytesitem = ((PyObject*)__pyx_t_1);
    9314           0 :   __pyx_t_1 = 0;
    9315             : 
    9316             :   /* "View.MemoryView":496
    9317             :  * 
    9318             :  *         bytesitem = itemp[:self.view.itemsize]
    9319             :  *         try:             # <<<<<<<<<<<<<<
    9320             :  *             result = struct.unpack(self.view.format, bytesitem)
    9321             :  *         except struct.error:
    9322             :  */
    9323             :   {
    9324           0 :     __Pyx_PyThreadState_declare
    9325           0 :     __Pyx_PyThreadState_assign
    9326           0 :     __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    9327           0 :     __Pyx_XGOTREF(__pyx_t_2);
    9328           0 :     __Pyx_XGOTREF(__pyx_t_3);
    9329           0 :     __Pyx_XGOTREF(__pyx_t_4);
    9330             :     /*try:*/ {
    9331             : 
    9332             :       /* "View.MemoryView":497
    9333             :  *         bytesitem = itemp[:self.view.itemsize]
    9334             :  *         try:
    9335             :  *             result = struct.unpack(self.view.format, bytesitem)             # <<<<<<<<<<<<<<
    9336             :  *         except struct.error:
    9337             :  *             raise ValueError, "Unable to convert item to object"
    9338             :  */
    9339           0 :       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 497, __pyx_L3_error)
    9340           0 :       __Pyx_GOTREF(__pyx_t_5);
    9341           0 :       __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 497, __pyx_L3_error)
    9342           0 :       __Pyx_GOTREF(__pyx_t_6);
    9343           0 :       __pyx_t_7 = NULL;
    9344           0 :       __pyx_t_8 = 0;
    9345             :       #if CYTHON_UNPACK_METHODS
    9346           0 :       if (likely(PyMethod_Check(__pyx_t_5))) {
    9347           0 :         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    9348           0 :         if (likely(__pyx_t_7)) {
    9349           0 :           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
    9350           0 :           __Pyx_INCREF(__pyx_t_7);
    9351           0 :           __Pyx_INCREF(function);
    9352           0 :           __Pyx_DECREF_SET(__pyx_t_5, function);
    9353             :           __pyx_t_8 = 1;
    9354             :         }
    9355             :       }
    9356             :       #endif
    9357             :       {
    9358           0 :         PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem};
    9359           0 :         __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    9360           0 :         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    9361           0 :         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    9362           0 :         if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L3_error)
    9363           0 :         __Pyx_GOTREF(__pyx_t_1);
    9364           0 :         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    9365             :       }
    9366           0 :       __pyx_v_result = __pyx_t_1;
    9367           0 :       __pyx_t_1 = 0;
    9368             : 
    9369             :       /* "View.MemoryView":496
    9370             :  * 
    9371             :  *         bytesitem = itemp[:self.view.itemsize]
    9372             :  *         try:             # <<<<<<<<<<<<<<
    9373             :  *             result = struct.unpack(self.view.format, bytesitem)
    9374             :  *         except struct.error:
    9375             :  */
    9376             :     }
    9377             : 
    9378             :     /* "View.MemoryView":501
    9379             :  *             raise ValueError, "Unable to convert item to object"
    9380             :  *         else:
    9381             :  *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
    9382             :  *                 return result[0]
    9383             :  *             return result
    9384             :  */
    9385             :     /*else:*/ {
    9386           0 :       __pyx_t_9 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 501, __pyx_L5_except_error)
    9387           0 :       __pyx_t_10 = (__pyx_t_9 == 1);
    9388           0 :       if (__pyx_t_10) {
    9389             : 
    9390             :         /* "View.MemoryView":502
    9391             :  *         else:
    9392             :  *             if len(self.view.format) == 1:
    9393             :  *                 return result[0]             # <<<<<<<<<<<<<<
    9394             :  *             return result
    9395             :  * 
    9396             :  */
    9397           0 :         __Pyx_XDECREF(__pyx_r);
    9398           0 :         __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 502, __pyx_L5_except_error)
    9399           0 :         __Pyx_GOTREF(__pyx_t_1);
    9400           0 :         __pyx_r = __pyx_t_1;
    9401           0 :         __pyx_t_1 = 0;
    9402           0 :         goto __pyx_L6_except_return;
    9403             : 
    9404             :         /* "View.MemoryView":501
    9405             :  *             raise ValueError, "Unable to convert item to object"
    9406             :  *         else:
    9407             :  *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
    9408             :  *                 return result[0]
    9409             :  *             return result
    9410             :  */
    9411             :       }
    9412             : 
    9413             :       /* "View.MemoryView":503
    9414             :  *             if len(self.view.format) == 1:
    9415             :  *                 return result[0]
    9416             :  *             return result             # <<<<<<<<<<<<<<
    9417             :  * 
    9418             :  *     cdef assign_item_from_object(self, char *itemp, object value):
    9419             :  */
    9420           0 :       __Pyx_XDECREF(__pyx_r);
    9421           0 :       __Pyx_INCREF(__pyx_v_result);
    9422           0 :       __pyx_r = __pyx_v_result;
    9423           0 :       goto __pyx_L6_except_return;
    9424             :     }
    9425           0 :     __pyx_L3_error:;
    9426           0 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    9427           0 :     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    9428           0 :     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    9429           0 :     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    9430             : 
    9431             :     /* "View.MemoryView":498
    9432             :  *         try:
    9433             :  *             result = struct.unpack(self.view.format, bytesitem)
    9434             :  *         except struct.error:             # <<<<<<<<<<<<<<
    9435             :  *             raise ValueError, "Unable to convert item to object"
    9436             :  *         else:
    9437             :  */
    9438           0 :     __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6);
    9439           0 :     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 498, __pyx_L5_except_error)
    9440           0 :     __Pyx_GOTREF(__pyx_t_7);
    9441           0 :     __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_7);
    9442           0 :     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    9443           0 :     __Pyx_ErrRestore(__pyx_t_1, __pyx_t_5, __pyx_t_6);
    9444           0 :     __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
    9445           0 :     if (__pyx_t_11) {
    9446           0 :       __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
    9447           0 :       if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 498, __pyx_L5_except_error)
    9448           0 :       __Pyx_XGOTREF(__pyx_t_6);
    9449           0 :       __Pyx_XGOTREF(__pyx_t_5);
    9450           0 :       __Pyx_XGOTREF(__pyx_t_1);
    9451             : 
    9452             :       /* "View.MemoryView":499
    9453             :  *             result = struct.unpack(self.view.format, bytesitem)
    9454             :  *         except struct.error:
    9455             :  *             raise ValueError, "Unable to convert item to object"             # <<<<<<<<<<<<<<
    9456             :  *         else:
    9457             :  *             if len(self.view.format) == 1:
    9458             :  */
    9459           0 :       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Unable_to_convert_item_to_object, 0, 0);
    9460           0 :       __PYX_ERR(1, 499, __pyx_L5_except_error)
    9461             :     }
    9462           0 :     goto __pyx_L5_except_error;
    9463             : 
    9464             :     /* "View.MemoryView":496
    9465             :  * 
    9466             :  *         bytesitem = itemp[:self.view.itemsize]
    9467             :  *         try:             # <<<<<<<<<<<<<<
    9468             :  *             result = struct.unpack(self.view.format, bytesitem)
    9469             :  *         except struct.error:
    9470             :  */
    9471           0 :     __pyx_L5_except_error:;
    9472           0 :     __Pyx_XGIVEREF(__pyx_t_2);
    9473           0 :     __Pyx_XGIVEREF(__pyx_t_3);
    9474           0 :     __Pyx_XGIVEREF(__pyx_t_4);
    9475           0 :     __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    9476           0 :     goto __pyx_L1_error;
    9477           0 :     __pyx_L6_except_return:;
    9478           0 :     __Pyx_XGIVEREF(__pyx_t_2);
    9479           0 :     __Pyx_XGIVEREF(__pyx_t_3);
    9480           0 :     __Pyx_XGIVEREF(__pyx_t_4);
    9481           0 :     __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    9482           0 :     goto __pyx_L0;
    9483             :   }
    9484             : 
    9485             :   /* "View.MemoryView":489
    9486             :  *         self.assign_item_from_object(itemp, value)
    9487             :  * 
    9488             :  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
    9489             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9490             :  *         know how to convert the type"""
    9491             :  */
    9492             : 
    9493             :   /* function exit code */
    9494           0 :   __pyx_L1_error:;
    9495           0 :   __Pyx_XDECREF(__pyx_t_1);
    9496           0 :   __Pyx_XDECREF(__pyx_t_5);
    9497           0 :   __Pyx_XDECREF(__pyx_t_6);
    9498           0 :   __Pyx_XDECREF(__pyx_t_7);
    9499           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
    9500           0 :   __pyx_r = 0;
    9501           0 :   __pyx_L0:;
    9502           0 :   __Pyx_XDECREF(__pyx_v_struct);
    9503           0 :   __Pyx_XDECREF(__pyx_v_bytesitem);
    9504           0 :   __Pyx_XDECREF(__pyx_v_result);
    9505           0 :   __Pyx_XGIVEREF(__pyx_r);
    9506           0 :   __Pyx_RefNannyFinishContext();
    9507           0 :   return __pyx_r;
    9508             : }
    9509             : 
    9510             : /* "View.MemoryView":505
    9511             :  *             return result
    9512             :  * 
    9513             :  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
    9514             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9515             :  *         know how to convert the type"""
    9516             :  */
    9517             : 
    9518           0 : static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
    9519           0 :   PyObject *__pyx_v_struct = NULL;
    9520           0 :   char __pyx_v_c;
    9521           0 :   PyObject *__pyx_v_bytesvalue = 0;
    9522           0 :   Py_ssize_t __pyx_v_i;
    9523           0 :   PyObject *__pyx_r = NULL;
    9524             :   __Pyx_RefNannyDeclarations
    9525           0 :   PyObject *__pyx_t_1 = NULL;
    9526           0 :   int __pyx_t_2;
    9527           0 :   PyObject *__pyx_t_3 = NULL;
    9528           0 :   PyObject *__pyx_t_4 = NULL;
    9529           0 :   PyObject *__pyx_t_5 = NULL;
    9530           0 :   unsigned int __pyx_t_6;
    9531           0 :   Py_ssize_t __pyx_t_7;
    9532           0 :   PyObject *__pyx_t_8 = NULL;
    9533           0 :   char *__pyx_t_9;
    9534           0 :   char *__pyx_t_10;
    9535           0 :   char *__pyx_t_11;
    9536           0 :   char *__pyx_t_12;
    9537           0 :   int __pyx_lineno = 0;
    9538           0 :   const char *__pyx_filename = NULL;
    9539           0 :   int __pyx_clineno = 0;
    9540           0 :   __Pyx_RefNannySetupContext("assign_item_from_object", 1);
    9541             : 
    9542             :   /* "View.MemoryView":508
    9543             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9544             :  *         know how to convert the type"""
    9545             :  *         import struct             # <<<<<<<<<<<<<<
    9546             :  *         cdef char c
    9547             :  *         cdef bytes bytesvalue
    9548             :  */
    9549           0 :   __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error)
    9550           0 :   __Pyx_GOTREF(__pyx_t_1);
    9551           0 :   __pyx_v_struct = __pyx_t_1;
    9552           0 :   __pyx_t_1 = 0;
    9553             : 
    9554             :   /* "View.MemoryView":513
    9555             :  *         cdef Py_ssize_t i
    9556             :  * 
    9557             :  *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
    9558             :  *             bytesvalue = struct.pack(self.view.format, *value)
    9559             :  *         else:
    9560             :  */
    9561           0 :   __pyx_t_2 = PyTuple_Check(__pyx_v_value); 
    9562           0 :   if (__pyx_t_2) {
    9563             : 
    9564             :     /* "View.MemoryView":514
    9565             :  * 
    9566             :  *         if isinstance(value, tuple):
    9567             :  *             bytesvalue = struct.pack(self.view.format, *value)             # <<<<<<<<<<<<<<
    9568             :  *         else:
    9569             :  *             bytesvalue = struct.pack(self.view.format, value)
    9570             :  */
    9571           0 :     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 514, __pyx_L1_error)
    9572           0 :     __Pyx_GOTREF(__pyx_t_1);
    9573           0 :     __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error)
    9574           0 :     __Pyx_GOTREF(__pyx_t_3);
    9575           0 :     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 514, __pyx_L1_error)
    9576           0 :     __Pyx_GOTREF(__pyx_t_4);
    9577           0 :     __Pyx_GIVEREF(__pyx_t_3);
    9578           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error);
    9579           0 :     __pyx_t_3 = 0;
    9580           0 :     __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error)
    9581           0 :     __Pyx_GOTREF(__pyx_t_3);
    9582           0 :     __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error)
    9583           0 :     __Pyx_GOTREF(__pyx_t_5);
    9584           0 :     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    9585           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    9586           0 :     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error)
    9587           0 :     __Pyx_GOTREF(__pyx_t_3);
    9588           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    9589           0 :     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    9590           0 :     if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 514, __pyx_L1_error)
    9591           0 :     __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3);
    9592           0 :     __pyx_t_3 = 0;
    9593             : 
    9594             :     /* "View.MemoryView":513
    9595             :  *         cdef Py_ssize_t i
    9596             :  * 
    9597             :  *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
    9598             :  *             bytesvalue = struct.pack(self.view.format, *value)
    9599             :  *         else:
    9600             :  */
    9601           0 :     goto __pyx_L3;
    9602             :   }
    9603             : 
    9604             :   /* "View.MemoryView":516
    9605             :  *             bytesvalue = struct.pack(self.view.format, *value)
    9606             :  *         else:
    9607             :  *             bytesvalue = struct.pack(self.view.format, value)             # <<<<<<<<<<<<<<
    9608             :  * 
    9609             :  *         for i, c in enumerate(bytesvalue):
    9610             :  */
    9611             :   /*else*/ {
    9612           0 :     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 516, __pyx_L1_error)
    9613           0 :     __Pyx_GOTREF(__pyx_t_5);
    9614           0 :     __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 516, __pyx_L1_error)
    9615           0 :     __Pyx_GOTREF(__pyx_t_1);
    9616           0 :     __pyx_t_4 = NULL;
    9617           0 :     __pyx_t_6 = 0;
    9618             :     #if CYTHON_UNPACK_METHODS
    9619           0 :     if (likely(PyMethod_Check(__pyx_t_5))) {
    9620           0 :       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    9621           0 :       if (likely(__pyx_t_4)) {
    9622           0 :         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
    9623           0 :         __Pyx_INCREF(__pyx_t_4);
    9624           0 :         __Pyx_INCREF(function);
    9625           0 :         __Pyx_DECREF_SET(__pyx_t_5, function);
    9626             :         __pyx_t_6 = 1;
    9627             :       }
    9628             :     }
    9629             :     #endif
    9630             :     {
    9631           0 :       PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_1, __pyx_v_value};
    9632           0 :       __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    9633           0 :       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    9634           0 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    9635           0 :       if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error)
    9636           0 :       __Pyx_GOTREF(__pyx_t_3);
    9637           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    9638             :     }
    9639           0 :     if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 516, __pyx_L1_error)
    9640             :     __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3);
    9641             :     __pyx_t_3 = 0;
    9642             :   }
    9643           0 :   __pyx_L3:;
    9644             : 
    9645             :   /* "View.MemoryView":518
    9646             :  *             bytesvalue = struct.pack(self.view.format, value)
    9647             :  * 
    9648             :  *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
    9649             :  *             itemp[i] = c
    9650             :  * 
    9651             :  */
    9652           0 :   __pyx_t_7 = 0;
    9653           0 :   if (unlikely(__pyx_v_bytesvalue == Py_None)) {
    9654           0 :     PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
    9655           0 :     __PYX_ERR(1, 518, __pyx_L1_error)
    9656             :   }
    9657           0 :   __Pyx_INCREF(__pyx_v_bytesvalue);
    9658           0 :   __pyx_t_8 = __pyx_v_bytesvalue;
    9659           0 :   __pyx_t_10 = PyBytes_AS_STRING(__pyx_t_8);
    9660           0 :   __pyx_t_11 = (__pyx_t_10 + PyBytes_GET_SIZE(__pyx_t_8));
    9661           0 :   for (__pyx_t_12 = __pyx_t_10; __pyx_t_12 < __pyx_t_11; __pyx_t_12++) {
    9662           0 :     __pyx_t_9 = __pyx_t_12;
    9663           0 :     __pyx_v_c = (__pyx_t_9[0]);
    9664             : 
    9665             :     /* "View.MemoryView":519
    9666             :  * 
    9667             :  *         for i, c in enumerate(bytesvalue):
    9668             :  *             itemp[i] = c             # <<<<<<<<<<<<<<
    9669             :  * 
    9670             :  *     @cname('getbuffer')
    9671             :  */
    9672           0 :     __pyx_v_i = __pyx_t_7;
    9673             : 
    9674             :     /* "View.MemoryView":518
    9675             :  *             bytesvalue = struct.pack(self.view.format, value)
    9676             :  * 
    9677             :  *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
    9678             :  *             itemp[i] = c
    9679             :  * 
    9680             :  */
    9681           0 :     __pyx_t_7 = (__pyx_t_7 + 1);
    9682             : 
    9683             :     /* "View.MemoryView":519
    9684             :  * 
    9685             :  *         for i, c in enumerate(bytesvalue):
    9686             :  *             itemp[i] = c             # <<<<<<<<<<<<<<
    9687             :  * 
    9688             :  *     @cname('getbuffer')
    9689             :  */
    9690           0 :     (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c;
    9691             :   }
    9692           0 :   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    9693             : 
    9694             :   /* "View.MemoryView":505
    9695             :  *             return result
    9696             :  * 
    9697             :  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
    9698             :  *         """Only used if instantiated manually by the user, or if Cython doesn't
    9699             :  *         know how to convert the type"""
    9700             :  */
    9701             : 
    9702             :   /* function exit code */
    9703           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    9704           0 :   goto __pyx_L0;
    9705           0 :   __pyx_L1_error:;
    9706           0 :   __Pyx_XDECREF(__pyx_t_1);
    9707           0 :   __Pyx_XDECREF(__pyx_t_3);
    9708           0 :   __Pyx_XDECREF(__pyx_t_4);
    9709           0 :   __Pyx_XDECREF(__pyx_t_5);
    9710           0 :   __Pyx_XDECREF(__pyx_t_8);
    9711           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
    9712           0 :   __pyx_r = 0;
    9713           0 :   __pyx_L0:;
    9714           0 :   __Pyx_XDECREF(__pyx_v_struct);
    9715           0 :   __Pyx_XDECREF(__pyx_v_bytesvalue);
    9716           0 :   __Pyx_XGIVEREF(__pyx_r);
    9717           0 :   __Pyx_RefNannyFinishContext();
    9718           0 :   return __pyx_r;
    9719             : }
    9720             : 
    9721             : /* "View.MemoryView":521
    9722             :  *             itemp[i] = c
    9723             :  * 
    9724             :  *     @cname('getbuffer')             # <<<<<<<<<<<<<<
    9725             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    9726             :  *         if flags & PyBUF_WRITABLE and self.view.readonly:
    9727             :  */
    9728             : 
    9729             : /* Python wrapper */
    9730             : CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
    9731           0 : CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
    9732           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
    9733           0 :   int __pyx_r;
    9734             :   __Pyx_RefNannyDeclarations
    9735           0 :   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
    9736           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
    9737           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
    9738             : 
    9739             :   /* function exit code */
    9740           0 :   __Pyx_RefNannyFinishContext();
    9741           0 :   return __pyx_r;
    9742             : }
    9743             : 
    9744           0 : static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
    9745           0 :   int __pyx_r;
    9746             :   __Pyx_RefNannyDeclarations
    9747           0 :   int __pyx_t_1;
    9748           0 :   int __pyx_t_2;
    9749           0 :   Py_ssize_t *__pyx_t_3;
    9750           0 :   char *__pyx_t_4;
    9751           0 :   void *__pyx_t_5;
    9752           0 :   int __pyx_t_6;
    9753           0 :   Py_ssize_t __pyx_t_7;
    9754           0 :   int __pyx_lineno = 0;
    9755           0 :   const char *__pyx_filename = NULL;
    9756           0 :   int __pyx_clineno = 0;
    9757           0 :   if (unlikely(__pyx_v_info == NULL)) {
    9758           0 :     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    9759           0 :     return -1;
    9760             :   }
    9761           0 :   __Pyx_RefNannySetupContext("__getbuffer__", 0);
    9762           0 :   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    9763           0 :   __Pyx_GIVEREF(__pyx_v_info->obj);
    9764             : 
    9765             :   /* "View.MemoryView":523
    9766             :  *     @cname('getbuffer')
    9767             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    9768             :  *         if flags & PyBUF_WRITABLE and self.view.readonly:             # <<<<<<<<<<<<<<
    9769             :  *             raise ValueError, "Cannot create writable memory view from read-only memoryview"
    9770             :  * 
    9771             :  */
    9772           0 :   __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0);
    9773           0 :   if (__pyx_t_2) {
    9774           0 :   } else {
    9775           0 :     __pyx_t_1 = __pyx_t_2;
    9776           0 :     goto __pyx_L4_bool_binop_done;
    9777             :   }
    9778           0 :   __pyx_t_1 = __pyx_v_self->view.readonly;
    9779           0 :   __pyx_L4_bool_binop_done:;
    9780           0 :   if (unlikely(__pyx_t_1)) {
    9781             : 
    9782             :     /* "View.MemoryView":524
    9783             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    9784             :  *         if flags & PyBUF_WRITABLE and self.view.readonly:
    9785             :  *             raise ValueError, "Cannot create writable memory view from read-only memoryview"             # <<<<<<<<<<<<<<
    9786             :  * 
    9787             :  *         if flags & PyBUF_ND:
    9788             :  */
    9789           0 :     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Cannot_create_writable_memory_vi, 0, 0);
    9790           0 :     __PYX_ERR(1, 524, __pyx_L1_error)
    9791             : 
    9792             :     /* "View.MemoryView":523
    9793             :  *     @cname('getbuffer')
    9794             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
    9795             :  *         if flags & PyBUF_WRITABLE and self.view.readonly:             # <<<<<<<<<<<<<<
    9796             :  *             raise ValueError, "Cannot create writable memory view from read-only memoryview"
    9797             :  * 
    9798             :  */
    9799             :   }
    9800             : 
    9801             :   /* "View.MemoryView":526
    9802             :  *             raise ValueError, "Cannot create writable memory view from read-only memoryview"
    9803             :  * 
    9804             :  *         if flags & PyBUF_ND:             # <<<<<<<<<<<<<<
    9805             :  *             info.shape = self.view.shape
    9806             :  *         else:
    9807             :  */
    9808           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0);
    9809           0 :   if (__pyx_t_1) {
    9810             : 
    9811             :     /* "View.MemoryView":527
    9812             :  * 
    9813             :  *         if flags & PyBUF_ND:
    9814             :  *             info.shape = self.view.shape             # <<<<<<<<<<<<<<
    9815             :  *         else:
    9816             :  *             info.shape = NULL
    9817             :  */
    9818           0 :     __pyx_t_3 = __pyx_v_self->view.shape;
    9819           0 :     __pyx_v_info->shape = __pyx_t_3;
    9820             : 
    9821             :     /* "View.MemoryView":526
    9822             :  *             raise ValueError, "Cannot create writable memory view from read-only memoryview"
    9823             :  * 
    9824             :  *         if flags & PyBUF_ND:             # <<<<<<<<<<<<<<
    9825             :  *             info.shape = self.view.shape
    9826             :  *         else:
    9827             :  */
    9828           0 :     goto __pyx_L6;
    9829             :   }
    9830             : 
    9831             :   /* "View.MemoryView":529
    9832             :  *             info.shape = self.view.shape
    9833             :  *         else:
    9834             :  *             info.shape = NULL             # <<<<<<<<<<<<<<
    9835             :  * 
    9836             :  *         if flags & PyBUF_STRIDES:
    9837             :  */
    9838             :   /*else*/ {
    9839           0 :     __pyx_v_info->shape = NULL;
    9840             :   }
    9841           0 :   __pyx_L6:;
    9842             : 
    9843             :   /* "View.MemoryView":531
    9844             :  *             info.shape = NULL
    9845             :  * 
    9846             :  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
    9847             :  *             info.strides = self.view.strides
    9848             :  *         else:
    9849             :  */
    9850           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0);
    9851           0 :   if (__pyx_t_1) {
    9852             : 
    9853             :     /* "View.MemoryView":532
    9854             :  * 
    9855             :  *         if flags & PyBUF_STRIDES:
    9856             :  *             info.strides = self.view.strides             # <<<<<<<<<<<<<<
    9857             :  *         else:
    9858             :  *             info.strides = NULL
    9859             :  */
    9860           0 :     __pyx_t_3 = __pyx_v_self->view.strides;
    9861           0 :     __pyx_v_info->strides = __pyx_t_3;
    9862             : 
    9863             :     /* "View.MemoryView":531
    9864             :  *             info.shape = NULL
    9865             :  * 
    9866             :  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
    9867             :  *             info.strides = self.view.strides
    9868             :  *         else:
    9869             :  */
    9870           0 :     goto __pyx_L7;
    9871             :   }
    9872             : 
    9873             :   /* "View.MemoryView":534
    9874             :  *             info.strides = self.view.strides
    9875             :  *         else:
    9876             :  *             info.strides = NULL             # <<<<<<<<<<<<<<
    9877             :  * 
    9878             :  *         if flags & PyBUF_INDIRECT:
    9879             :  */
    9880             :   /*else*/ {
    9881           0 :     __pyx_v_info->strides = NULL;
    9882             :   }
    9883           0 :   __pyx_L7:;
    9884             : 
    9885             :   /* "View.MemoryView":536
    9886             :  *             info.strides = NULL
    9887             :  * 
    9888             :  *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
    9889             :  *             info.suboffsets = self.view.suboffsets
    9890             :  *         else:
    9891             :  */
    9892           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0);
    9893           0 :   if (__pyx_t_1) {
    9894             : 
    9895             :     /* "View.MemoryView":537
    9896             :  * 
    9897             :  *         if flags & PyBUF_INDIRECT:
    9898             :  *             info.suboffsets = self.view.suboffsets             # <<<<<<<<<<<<<<
    9899             :  *         else:
    9900             :  *             info.suboffsets = NULL
    9901             :  */
    9902           0 :     __pyx_t_3 = __pyx_v_self->view.suboffsets;
    9903           0 :     __pyx_v_info->suboffsets = __pyx_t_3;
    9904             : 
    9905             :     /* "View.MemoryView":536
    9906             :  *             info.strides = NULL
    9907             :  * 
    9908             :  *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
    9909             :  *             info.suboffsets = self.view.suboffsets
    9910             :  *         else:
    9911             :  */
    9912           0 :     goto __pyx_L8;
    9913             :   }
    9914             : 
    9915             :   /* "View.MemoryView":539
    9916             :  *             info.suboffsets = self.view.suboffsets
    9917             :  *         else:
    9918             :  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
    9919             :  * 
    9920             :  *         if flags & PyBUF_FORMAT:
    9921             :  */
    9922             :   /*else*/ {
    9923           0 :     __pyx_v_info->suboffsets = NULL;
    9924             :   }
    9925           0 :   __pyx_L8:;
    9926             : 
    9927             :   /* "View.MemoryView":541
    9928             :  *             info.suboffsets = NULL
    9929             :  * 
    9930             :  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
    9931             :  *             info.format = self.view.format
    9932             :  *         else:
    9933             :  */
    9934           0 :   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
    9935           0 :   if (__pyx_t_1) {
    9936             : 
    9937             :     /* "View.MemoryView":542
    9938             :  * 
    9939             :  *         if flags & PyBUF_FORMAT:
    9940             :  *             info.format = self.view.format             # <<<<<<<<<<<<<<
    9941             :  *         else:
    9942             :  *             info.format = NULL
    9943             :  */
    9944           0 :     __pyx_t_4 = __pyx_v_self->view.format;
    9945           0 :     __pyx_v_info->format = __pyx_t_4;
    9946             : 
    9947             :     /* "View.MemoryView":541
    9948             :  *             info.suboffsets = NULL
    9949             :  * 
    9950             :  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
    9951             :  *             info.format = self.view.format
    9952             :  *         else:
    9953             :  */
    9954           0 :     goto __pyx_L9;
    9955             :   }
    9956             : 
    9957             :   /* "View.MemoryView":544
    9958             :  *             info.format = self.view.format
    9959             :  *         else:
    9960             :  *             info.format = NULL             # <<<<<<<<<<<<<<
    9961             :  * 
    9962             :  *         info.buf = self.view.buf
    9963             :  */
    9964             :   /*else*/ {
    9965           0 :     __pyx_v_info->format = NULL;
    9966             :   }
    9967           0 :   __pyx_L9:;
    9968             : 
    9969             :   /* "View.MemoryView":546
    9970             :  *             info.format = NULL
    9971             :  * 
    9972             :  *         info.buf = self.view.buf             # <<<<<<<<<<<<<<
    9973             :  *         info.ndim = self.view.ndim
    9974             :  *         info.itemsize = self.view.itemsize
    9975             :  */
    9976           0 :   __pyx_t_5 = __pyx_v_self->view.buf;
    9977           0 :   __pyx_v_info->buf = __pyx_t_5;
    9978             : 
    9979             :   /* "View.MemoryView":547
    9980             :  * 
    9981             :  *         info.buf = self.view.buf
    9982             :  *         info.ndim = self.view.ndim             # <<<<<<<<<<<<<<
    9983             :  *         info.itemsize = self.view.itemsize
    9984             :  *         info.len = self.view.len
    9985             :  */
    9986           0 :   __pyx_t_6 = __pyx_v_self->view.ndim;
    9987           0 :   __pyx_v_info->ndim = __pyx_t_6;
    9988             : 
    9989             :   /* "View.MemoryView":548
    9990             :  *         info.buf = self.view.buf
    9991             :  *         info.ndim = self.view.ndim
    9992             :  *         info.itemsize = self.view.itemsize             # <<<<<<<<<<<<<<
    9993             :  *         info.len = self.view.len
    9994             :  *         info.readonly = self.view.readonly
    9995             :  */
    9996           0 :   __pyx_t_7 = __pyx_v_self->view.itemsize;
    9997           0 :   __pyx_v_info->itemsize = __pyx_t_7;
    9998             : 
    9999             :   /* "View.MemoryView":549
   10000             :  *         info.ndim = self.view.ndim
   10001             :  *         info.itemsize = self.view.itemsize
   10002             :  *         info.len = self.view.len             # <<<<<<<<<<<<<<
   10003             :  *         info.readonly = self.view.readonly
   10004             :  *         info.obj = self
   10005             :  */
   10006           0 :   __pyx_t_7 = __pyx_v_self->view.len;
   10007           0 :   __pyx_v_info->len = __pyx_t_7;
   10008             : 
   10009             :   /* "View.MemoryView":550
   10010             :  *         info.itemsize = self.view.itemsize
   10011             :  *         info.len = self.view.len
   10012             :  *         info.readonly = self.view.readonly             # <<<<<<<<<<<<<<
   10013             :  *         info.obj = self
   10014             :  * 
   10015             :  */
   10016           0 :   __pyx_t_1 = __pyx_v_self->view.readonly;
   10017           0 :   __pyx_v_info->readonly = __pyx_t_1;
   10018             : 
   10019             :   /* "View.MemoryView":551
   10020             :  *         info.len = self.view.len
   10021             :  *         info.readonly = self.view.readonly
   10022             :  *         info.obj = self             # <<<<<<<<<<<<<<
   10023             :  * 
   10024             :  * 
   10025             :  */
   10026           0 :   __Pyx_INCREF((PyObject *)__pyx_v_self);
   10027           0 :   __Pyx_GIVEREF((PyObject *)__pyx_v_self);
   10028           0 :   __Pyx_GOTREF(__pyx_v_info->obj);
   10029           0 :   __Pyx_DECREF(__pyx_v_info->obj);
   10030           0 :   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
   10031             : 
   10032             :   /* "View.MemoryView":521
   10033             :  *             itemp[i] = c
   10034             :  * 
   10035             :  *     @cname('getbuffer')             # <<<<<<<<<<<<<<
   10036             :  *     def __getbuffer__(self, Py_buffer *info, int flags):
   10037             :  *         if flags & PyBUF_WRITABLE and self.view.readonly:
   10038             :  */
   10039             : 
   10040             :   /* function exit code */
   10041           0 :   __pyx_r = 0;
   10042           0 :   goto __pyx_L0;
   10043           0 :   __pyx_L1_error:;
   10044           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10045           0 :   __pyx_r = -1;
   10046           0 :   if (__pyx_v_info->obj != NULL) {
   10047           0 :     __Pyx_GOTREF(__pyx_v_info->obj);
   10048           0 :     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
   10049             :   }
   10050           0 :   goto __pyx_L2;
   10051           0 :   __pyx_L0:;
   10052           0 :   if (__pyx_v_info->obj == Py_None) {
   10053           0 :     __Pyx_GOTREF(__pyx_v_info->obj);
   10054           0 :     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
   10055             :   }
   10056           0 :   __pyx_L2:;
   10057             :   __Pyx_RefNannyFinishContext();
   10058             :   return __pyx_r;
   10059             : }
   10060             : 
   10061             : /* "View.MemoryView":554
   10062             :  * 
   10063             :  * 
   10064             :  *     @property             # <<<<<<<<<<<<<<
   10065             :  *     def T(self):
   10066             :  *         cdef _memoryviewslice result = memoryview_copy(self)
   10067             :  */
   10068             : 
   10069             : /* Python wrapper */
   10070             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/
   10071           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) {
   10072           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10073           0 :   PyObject *__pyx_r = 0;
   10074             :   __Pyx_RefNannyDeclarations
   10075           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10076           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10077           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10078             : 
   10079             :   /* function exit code */
   10080           0 :   __Pyx_RefNannyFinishContext();
   10081           0 :   return __pyx_r;
   10082             : }
   10083             : 
   10084           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10085           0 :   struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
   10086           0 :   PyObject *__pyx_r = NULL;
   10087             :   __Pyx_RefNannyDeclarations
   10088           0 :   PyObject *__pyx_t_1 = NULL;
   10089           0 :   int __pyx_t_2;
   10090           0 :   int __pyx_lineno = 0;
   10091           0 :   const char *__pyx_filename = NULL;
   10092           0 :   int __pyx_clineno = 0;
   10093           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10094             : 
   10095             :   /* "View.MemoryView":556
   10096             :  *     @property
   10097             :  *     def T(self):
   10098             :  *         cdef _memoryviewslice result = memoryview_copy(self)             # <<<<<<<<<<<<<<
   10099             :  *         transpose_memslice(&result.from_slice)
   10100             :  *         return result
   10101             :  */
   10102           0 :   __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 556, __pyx_L1_error)
   10103           0 :   __Pyx_GOTREF(__pyx_t_1);
   10104           0 :   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 556, __pyx_L1_error)
   10105           0 :   __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1);
   10106           0 :   __pyx_t_1 = 0;
   10107             : 
   10108             :   /* "View.MemoryView":557
   10109             :  *     def T(self):
   10110             :  *         cdef _memoryviewslice result = memoryview_copy(self)
   10111             :  *         transpose_memslice(&result.from_slice)             # <<<<<<<<<<<<<<
   10112             :  *         return result
   10113             :  * 
   10114             :  */
   10115           0 :   __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 557, __pyx_L1_error)
   10116             : 
   10117             :   /* "View.MemoryView":558
   10118             :  *         cdef _memoryviewslice result = memoryview_copy(self)
   10119             :  *         transpose_memslice(&result.from_slice)
   10120             :  *         return result             # <<<<<<<<<<<<<<
   10121             :  * 
   10122             :  *     @property
   10123             :  */
   10124           0 :   __Pyx_XDECREF(__pyx_r);
   10125           0 :   __Pyx_INCREF((PyObject *)__pyx_v_result);
   10126           0 :   __pyx_r = ((PyObject *)__pyx_v_result);
   10127           0 :   goto __pyx_L0;
   10128             : 
   10129             :   /* "View.MemoryView":554
   10130             :  * 
   10131             :  * 
   10132             :  *     @property             # <<<<<<<<<<<<<<
   10133             :  *     def T(self):
   10134             :  *         cdef _memoryviewslice result = memoryview_copy(self)
   10135             :  */
   10136             : 
   10137             :   /* function exit code */
   10138           0 :   __pyx_L1_error:;
   10139           0 :   __Pyx_XDECREF(__pyx_t_1);
   10140           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10141           0 :   __pyx_r = NULL;
   10142           0 :   __pyx_L0:;
   10143           0 :   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   10144           0 :   __Pyx_XGIVEREF(__pyx_r);
   10145           0 :   __Pyx_RefNannyFinishContext();
   10146           0 :   return __pyx_r;
   10147             : }
   10148             : 
   10149             : /* "View.MemoryView":560
   10150             :  *         return result
   10151             :  * 
   10152             :  *     @property             # <<<<<<<<<<<<<<
   10153             :  *     def base(self):
   10154             :  *         return self._get_base()
   10155             :  */
   10156             : 
   10157             : /* Python wrapper */
   10158             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/
   10159           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) {
   10160           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10161           0 :   PyObject *__pyx_r = 0;
   10162             :   __Pyx_RefNannyDeclarations
   10163           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10164           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10165           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10166             : 
   10167             :   /* function exit code */
   10168           0 :   __Pyx_RefNannyFinishContext();
   10169           0 :   return __pyx_r;
   10170             : }
   10171             : 
   10172           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10173           0 :   PyObject *__pyx_r = NULL;
   10174             :   __Pyx_RefNannyDeclarations
   10175           0 :   PyObject *__pyx_t_1 = NULL;
   10176           0 :   int __pyx_lineno = 0;
   10177           0 :   const char *__pyx_filename = NULL;
   10178           0 :   int __pyx_clineno = 0;
   10179           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10180             : 
   10181             :   /* "View.MemoryView":562
   10182             :  *     @property
   10183             :  *     def base(self):
   10184             :  *         return self._get_base()             # <<<<<<<<<<<<<<
   10185             :  * 
   10186             :  *     cdef _get_base(self):
   10187             :  */
   10188           0 :   __Pyx_XDECREF(__pyx_r);
   10189           0 :   __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error)
   10190           0 :   __Pyx_GOTREF(__pyx_t_1);
   10191           0 :   __pyx_r = __pyx_t_1;
   10192           0 :   __pyx_t_1 = 0;
   10193           0 :   goto __pyx_L0;
   10194             : 
   10195             :   /* "View.MemoryView":560
   10196             :  *         return result
   10197             :  * 
   10198             :  *     @property             # <<<<<<<<<<<<<<
   10199             :  *     def base(self):
   10200             :  *         return self._get_base()
   10201             :  */
   10202             : 
   10203             :   /* function exit code */
   10204           0 :   __pyx_L1_error:;
   10205           0 :   __Pyx_XDECREF(__pyx_t_1);
   10206           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.base.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10207           0 :   __pyx_r = NULL;
   10208           0 :   __pyx_L0:;
   10209           0 :   __Pyx_XGIVEREF(__pyx_r);
   10210           0 :   __Pyx_RefNannyFinishContext();
   10211           0 :   return __pyx_r;
   10212             : }
   10213             : 
   10214             : /* "View.MemoryView":564
   10215             :  *         return self._get_base()
   10216             :  * 
   10217             :  *     cdef _get_base(self):             # <<<<<<<<<<<<<<
   10218             :  *         return self.obj
   10219             :  * 
   10220             :  */
   10221             : 
   10222           3 : static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v_self) {
   10223           3 :   PyObject *__pyx_r = NULL;
   10224             :   __Pyx_RefNannyDeclarations
   10225           3 :   __Pyx_RefNannySetupContext("_get_base", 1);
   10226             : 
   10227             :   /* "View.MemoryView":565
   10228             :  * 
   10229             :  *     cdef _get_base(self):
   10230             :  *         return self.obj             # <<<<<<<<<<<<<<
   10231             :  * 
   10232             :  *     @property
   10233             :  */
   10234           3 :   __Pyx_XDECREF(__pyx_r);
   10235           3 :   __Pyx_INCREF(__pyx_v_self->obj);
   10236           3 :   __pyx_r = __pyx_v_self->obj;
   10237           3 :   goto __pyx_L0;
   10238             : 
   10239             :   /* "View.MemoryView":564
   10240             :  *         return self._get_base()
   10241             :  * 
   10242             :  *     cdef _get_base(self):             # <<<<<<<<<<<<<<
   10243             :  *         return self.obj
   10244             :  * 
   10245             :  */
   10246             : 
   10247             :   /* function exit code */
   10248           3 :   __pyx_L0:;
   10249           3 :   __Pyx_XGIVEREF(__pyx_r);
   10250           3 :   __Pyx_RefNannyFinishContext();
   10251           3 :   return __pyx_r;
   10252             : }
   10253             : 
   10254             : /* "View.MemoryView":567
   10255             :  *         return self.obj
   10256             :  * 
   10257             :  *     @property             # <<<<<<<<<<<<<<
   10258             :  *     def shape(self):
   10259             :  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
   10260             :  */
   10261             : 
   10262             : /* Python wrapper */
   10263             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
   10264           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) {
   10265           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10266           0 :   PyObject *__pyx_r = 0;
   10267             :   __Pyx_RefNannyDeclarations
   10268           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10269           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10270           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10271             : 
   10272             :   /* function exit code */
   10273           0 :   __Pyx_RefNannyFinishContext();
   10274           0 :   return __pyx_r;
   10275             : }
   10276             : 
   10277           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10278           0 :   Py_ssize_t __pyx_7genexpr__pyx_v_length;
   10279           0 :   PyObject *__pyx_r = NULL;
   10280             :   __Pyx_RefNannyDeclarations
   10281           0 :   PyObject *__pyx_t_1 = NULL;
   10282           0 :   Py_ssize_t *__pyx_t_2;
   10283           0 :   Py_ssize_t *__pyx_t_3;
   10284           0 :   Py_ssize_t *__pyx_t_4;
   10285           0 :   PyObject *__pyx_t_5 = NULL;
   10286           0 :   int __pyx_lineno = 0;
   10287           0 :   const char *__pyx_filename = NULL;
   10288           0 :   int __pyx_clineno = 0;
   10289           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10290             : 
   10291             :   /* "View.MemoryView":569
   10292             :  *     @property
   10293             :  *     def shape(self):
   10294             :  *         return tuple([length for length in self.view.shape[:self.view.ndim]])             # <<<<<<<<<<<<<<
   10295             :  * 
   10296             :  *     @property
   10297             :  */
   10298           0 :   __Pyx_XDECREF(__pyx_r);
   10299             :   { /* enter inner scope */
   10300           0 :     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 569, __pyx_L1_error)
   10301           0 :     __Pyx_GOTREF(__pyx_t_1);
   10302           0 :     __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
   10303           0 :     for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
   10304           0 :       __pyx_t_2 = __pyx_t_4;
   10305           0 :       __pyx_7genexpr__pyx_v_length = (__pyx_t_2[0]);
   10306           0 :       __pyx_t_5 = PyInt_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error)
   10307           0 :       __Pyx_GOTREF(__pyx_t_5);
   10308           0 :       if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 569, __pyx_L1_error)
   10309           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   10310             :     }
   10311             :   } /* exit inner scope */
   10312           0 :   __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error)
   10313           0 :   __Pyx_GOTREF(__pyx_t_5);
   10314           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   10315           0 :   __pyx_r = __pyx_t_5;
   10316           0 :   __pyx_t_5 = 0;
   10317           0 :   goto __pyx_L0;
   10318             : 
   10319             :   /* "View.MemoryView":567
   10320             :  *         return self.obj
   10321             :  * 
   10322             :  *     @property             # <<<<<<<<<<<<<<
   10323             :  *     def shape(self):
   10324             :  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
   10325             :  */
   10326             : 
   10327             :   /* function exit code */
   10328           0 :   __pyx_L1_error:;
   10329           0 :   __Pyx_XDECREF(__pyx_t_1);
   10330           0 :   __Pyx_XDECREF(__pyx_t_5);
   10331           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10332           0 :   __pyx_r = NULL;
   10333           0 :   __pyx_L0:;
   10334           0 :   __Pyx_XGIVEREF(__pyx_r);
   10335           0 :   __Pyx_RefNannyFinishContext();
   10336           0 :   return __pyx_r;
   10337             : }
   10338             : 
   10339             : /* "View.MemoryView":571
   10340             :  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
   10341             :  * 
   10342             :  *     @property             # <<<<<<<<<<<<<<
   10343             :  *     def strides(self):
   10344             :  *         if self.view.strides == NULL:
   10345             :  */
   10346             : 
   10347             : /* Python wrapper */
   10348             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/
   10349           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) {
   10350           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10351           0 :   PyObject *__pyx_r = 0;
   10352             :   __Pyx_RefNannyDeclarations
   10353           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10354           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10355           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10356             : 
   10357             :   /* function exit code */
   10358           0 :   __Pyx_RefNannyFinishContext();
   10359           0 :   return __pyx_r;
   10360             : }
   10361             : 
   10362           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10363           0 :   Py_ssize_t __pyx_8genexpr1__pyx_v_stride;
   10364           0 :   PyObject *__pyx_r = NULL;
   10365             :   __Pyx_RefNannyDeclarations
   10366           0 :   int __pyx_t_1;
   10367           0 :   PyObject *__pyx_t_2 = NULL;
   10368           0 :   Py_ssize_t *__pyx_t_3;
   10369           0 :   Py_ssize_t *__pyx_t_4;
   10370           0 :   Py_ssize_t *__pyx_t_5;
   10371           0 :   PyObject *__pyx_t_6 = NULL;
   10372           0 :   int __pyx_lineno = 0;
   10373           0 :   const char *__pyx_filename = NULL;
   10374           0 :   int __pyx_clineno = 0;
   10375           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10376             : 
   10377             :   /* "View.MemoryView":573
   10378             :  *     @property
   10379             :  *     def strides(self):
   10380             :  *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
   10381             :  * 
   10382             :  *             raise ValueError, "Buffer view does not expose strides"
   10383             :  */
   10384           0 :   __pyx_t_1 = (__pyx_v_self->view.strides == NULL);
   10385           0 :   if (unlikely(__pyx_t_1)) {
   10386             : 
   10387             :     /* "View.MemoryView":575
   10388             :  *         if self.view.strides == NULL:
   10389             :  * 
   10390             :  *             raise ValueError, "Buffer view does not expose strides"             # <<<<<<<<<<<<<<
   10391             :  * 
   10392             :  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
   10393             :  */
   10394           0 :     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Buffer_view_does_not_expose_stri, 0, 0);
   10395           0 :     __PYX_ERR(1, 575, __pyx_L1_error)
   10396             : 
   10397             :     /* "View.MemoryView":573
   10398             :  *     @property
   10399             :  *     def strides(self):
   10400             :  *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
   10401             :  * 
   10402             :  *             raise ValueError, "Buffer view does not expose strides"
   10403             :  */
   10404             :   }
   10405             : 
   10406             :   /* "View.MemoryView":577
   10407             :  *             raise ValueError, "Buffer view does not expose strides"
   10408             :  * 
   10409             :  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])             # <<<<<<<<<<<<<<
   10410             :  * 
   10411             :  *     @property
   10412             :  */
   10413           0 :   __Pyx_XDECREF(__pyx_r);
   10414             :   { /* enter inner scope */
   10415           0 :     __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error)
   10416           0 :     __Pyx_GOTREF(__pyx_t_2);
   10417           0 :     __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim);
   10418           0 :     for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
   10419           0 :       __pyx_t_3 = __pyx_t_5;
   10420           0 :       __pyx_8genexpr1__pyx_v_stride = (__pyx_t_3[0]);
   10421           0 :       __pyx_t_6 = PyInt_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error)
   10422           0 :       __Pyx_GOTREF(__pyx_t_6);
   10423           0 :       if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 577, __pyx_L1_error)
   10424           0 :       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   10425             :     }
   10426             :   } /* exit inner scope */
   10427           0 :   __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error)
   10428           0 :   __Pyx_GOTREF(__pyx_t_6);
   10429           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   10430           0 :   __pyx_r = __pyx_t_6;
   10431           0 :   __pyx_t_6 = 0;
   10432           0 :   goto __pyx_L0;
   10433             : 
   10434             :   /* "View.MemoryView":571
   10435             :  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
   10436             :  * 
   10437             :  *     @property             # <<<<<<<<<<<<<<
   10438             :  *     def strides(self):
   10439             :  *         if self.view.strides == NULL:
   10440             :  */
   10441             : 
   10442             :   /* function exit code */
   10443           0 :   __pyx_L1_error:;
   10444           0 :   __Pyx_XDECREF(__pyx_t_2);
   10445           0 :   __Pyx_XDECREF(__pyx_t_6);
   10446           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10447           0 :   __pyx_r = NULL;
   10448           0 :   __pyx_L0:;
   10449           0 :   __Pyx_XGIVEREF(__pyx_r);
   10450           0 :   __Pyx_RefNannyFinishContext();
   10451           0 :   return __pyx_r;
   10452             : }
   10453             : 
   10454             : /* "View.MemoryView":579
   10455             :  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
   10456             :  * 
   10457             :  *     @property             # <<<<<<<<<<<<<<
   10458             :  *     def suboffsets(self):
   10459             :  *         if self.view.suboffsets == NULL:
   10460             :  */
   10461             : 
   10462             : /* Python wrapper */
   10463             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/
   10464           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) {
   10465           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10466           0 :   PyObject *__pyx_r = 0;
   10467             :   __Pyx_RefNannyDeclarations
   10468           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10469           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10470           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10471             : 
   10472             :   /* function exit code */
   10473           0 :   __Pyx_RefNannyFinishContext();
   10474           0 :   return __pyx_r;
   10475             : }
   10476             : 
   10477           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10478           0 :   Py_ssize_t __pyx_8genexpr2__pyx_v_suboffset;
   10479           0 :   PyObject *__pyx_r = NULL;
   10480             :   __Pyx_RefNannyDeclarations
   10481           0 :   int __pyx_t_1;
   10482           0 :   PyObject *__pyx_t_2 = NULL;
   10483           0 :   Py_ssize_t *__pyx_t_3;
   10484           0 :   Py_ssize_t *__pyx_t_4;
   10485           0 :   Py_ssize_t *__pyx_t_5;
   10486           0 :   PyObject *__pyx_t_6 = NULL;
   10487           0 :   int __pyx_lineno = 0;
   10488           0 :   const char *__pyx_filename = NULL;
   10489           0 :   int __pyx_clineno = 0;
   10490           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10491             : 
   10492             :   /* "View.MemoryView":581
   10493             :  *     @property
   10494             :  *     def suboffsets(self):
   10495             :  *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
   10496             :  *             return (-1,) * self.view.ndim
   10497             :  * 
   10498             :  */
   10499           0 :   __pyx_t_1 = (__pyx_v_self->view.suboffsets == NULL);
   10500           0 :   if (__pyx_t_1) {
   10501             : 
   10502             :     /* "View.MemoryView":582
   10503             :  *     def suboffsets(self):
   10504             :  *         if self.view.suboffsets == NULL:
   10505             :  *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
   10506             :  * 
   10507             :  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
   10508             :  */
   10509           0 :     __Pyx_XDECREF(__pyx_r);
   10510           0 :     __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_tuple__4, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 582, __pyx_L1_error)
   10511           0 :     __Pyx_GOTREF(__pyx_t_2);
   10512           0 :     __pyx_r = __pyx_t_2;
   10513           0 :     __pyx_t_2 = 0;
   10514           0 :     goto __pyx_L0;
   10515             : 
   10516             :     /* "View.MemoryView":581
   10517             :  *     @property
   10518             :  *     def suboffsets(self):
   10519             :  *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
   10520             :  *             return (-1,) * self.view.ndim
   10521             :  * 
   10522             :  */
   10523             :   }
   10524             : 
   10525             :   /* "View.MemoryView":584
   10526             :  *             return (-1,) * self.view.ndim
   10527             :  * 
   10528             :  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])             # <<<<<<<<<<<<<<
   10529             :  * 
   10530             :  *     @property
   10531             :  */
   10532           0 :   __Pyx_XDECREF(__pyx_r);
   10533             :   { /* enter inner scope */
   10534           0 :     __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 584, __pyx_L1_error)
   10535           0 :     __Pyx_GOTREF(__pyx_t_2);
   10536           0 :     __pyx_t_4 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim);
   10537           0 :     for (__pyx_t_5 = __pyx_v_self->view.suboffsets; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
   10538           0 :       __pyx_t_3 = __pyx_t_5;
   10539           0 :       __pyx_8genexpr2__pyx_v_suboffset = (__pyx_t_3[0]);
   10540           0 :       __pyx_t_6 = PyInt_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error)
   10541           0 :       __Pyx_GOTREF(__pyx_t_6);
   10542           0 :       if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 584, __pyx_L1_error)
   10543           0 :       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   10544             :     }
   10545             :   } /* exit inner scope */
   10546           0 :   __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error)
   10547           0 :   __Pyx_GOTREF(__pyx_t_6);
   10548           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   10549           0 :   __pyx_r = __pyx_t_6;
   10550           0 :   __pyx_t_6 = 0;
   10551           0 :   goto __pyx_L0;
   10552             : 
   10553             :   /* "View.MemoryView":579
   10554             :  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
   10555             :  * 
   10556             :  *     @property             # <<<<<<<<<<<<<<
   10557             :  *     def suboffsets(self):
   10558             :  *         if self.view.suboffsets == NULL:
   10559             :  */
   10560             : 
   10561             :   /* function exit code */
   10562           0 :   __pyx_L1_error:;
   10563           0 :   __Pyx_XDECREF(__pyx_t_2);
   10564           0 :   __Pyx_XDECREF(__pyx_t_6);
   10565           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10566           0 :   __pyx_r = NULL;
   10567           0 :   __pyx_L0:;
   10568           0 :   __Pyx_XGIVEREF(__pyx_r);
   10569           0 :   __Pyx_RefNannyFinishContext();
   10570           0 :   return __pyx_r;
   10571             : }
   10572             : 
   10573             : /* "View.MemoryView":586
   10574             :  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
   10575             :  * 
   10576             :  *     @property             # <<<<<<<<<<<<<<
   10577             :  *     def ndim(self):
   10578             :  *         return self.view.ndim
   10579             :  */
   10580             : 
   10581             : /* Python wrapper */
   10582             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
   10583           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) {
   10584           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10585           0 :   PyObject *__pyx_r = 0;
   10586             :   __Pyx_RefNannyDeclarations
   10587           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10588           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10589           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10590             : 
   10591             :   /* function exit code */
   10592           0 :   __Pyx_RefNannyFinishContext();
   10593           0 :   return __pyx_r;
   10594             : }
   10595             : 
   10596           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10597           0 :   PyObject *__pyx_r = NULL;
   10598             :   __Pyx_RefNannyDeclarations
   10599           0 :   PyObject *__pyx_t_1 = NULL;
   10600           0 :   int __pyx_lineno = 0;
   10601           0 :   const char *__pyx_filename = NULL;
   10602           0 :   int __pyx_clineno = 0;
   10603           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10604             : 
   10605             :   /* "View.MemoryView":588
   10606             :  *     @property
   10607             :  *     def ndim(self):
   10608             :  *         return self.view.ndim             # <<<<<<<<<<<<<<
   10609             :  * 
   10610             :  *     @property
   10611             :  */
   10612           0 :   __Pyx_XDECREF(__pyx_r);
   10613           0 :   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 588, __pyx_L1_error)
   10614           0 :   __Pyx_GOTREF(__pyx_t_1);
   10615           0 :   __pyx_r = __pyx_t_1;
   10616           0 :   __pyx_t_1 = 0;
   10617           0 :   goto __pyx_L0;
   10618             : 
   10619             :   /* "View.MemoryView":586
   10620             :  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
   10621             :  * 
   10622             :  *     @property             # <<<<<<<<<<<<<<
   10623             :  *     def ndim(self):
   10624             :  *         return self.view.ndim
   10625             :  */
   10626             : 
   10627             :   /* function exit code */
   10628           0 :   __pyx_L1_error:;
   10629           0 :   __Pyx_XDECREF(__pyx_t_1);
   10630           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10631           0 :   __pyx_r = NULL;
   10632           0 :   __pyx_L0:;
   10633           0 :   __Pyx_XGIVEREF(__pyx_r);
   10634           0 :   __Pyx_RefNannyFinishContext();
   10635           0 :   return __pyx_r;
   10636             : }
   10637             : 
   10638             : /* "View.MemoryView":590
   10639             :  *         return self.view.ndim
   10640             :  * 
   10641             :  *     @property             # <<<<<<<<<<<<<<
   10642             :  *     def itemsize(self):
   10643             :  *         return self.view.itemsize
   10644             :  */
   10645             : 
   10646             : /* Python wrapper */
   10647             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/
   10648           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) {
   10649           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10650           0 :   PyObject *__pyx_r = 0;
   10651             :   __Pyx_RefNannyDeclarations
   10652           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10653           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10654           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10655             : 
   10656             :   /* function exit code */
   10657           0 :   __Pyx_RefNannyFinishContext();
   10658           0 :   return __pyx_r;
   10659             : }
   10660             : 
   10661           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10662           0 :   PyObject *__pyx_r = NULL;
   10663             :   __Pyx_RefNannyDeclarations
   10664           0 :   PyObject *__pyx_t_1 = NULL;
   10665           0 :   int __pyx_lineno = 0;
   10666           0 :   const char *__pyx_filename = NULL;
   10667           0 :   int __pyx_clineno = 0;
   10668           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10669             : 
   10670             :   /* "View.MemoryView":592
   10671             :  *     @property
   10672             :  *     def itemsize(self):
   10673             :  *         return self.view.itemsize             # <<<<<<<<<<<<<<
   10674             :  * 
   10675             :  *     @property
   10676             :  */
   10677           0 :   __Pyx_XDECREF(__pyx_r);
   10678           0 :   __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 592, __pyx_L1_error)
   10679           0 :   __Pyx_GOTREF(__pyx_t_1);
   10680           0 :   __pyx_r = __pyx_t_1;
   10681           0 :   __pyx_t_1 = 0;
   10682           0 :   goto __pyx_L0;
   10683             : 
   10684             :   /* "View.MemoryView":590
   10685             :  *         return self.view.ndim
   10686             :  * 
   10687             :  *     @property             # <<<<<<<<<<<<<<
   10688             :  *     def itemsize(self):
   10689             :  *         return self.view.itemsize
   10690             :  */
   10691             : 
   10692             :   /* function exit code */
   10693           0 :   __pyx_L1_error:;
   10694           0 :   __Pyx_XDECREF(__pyx_t_1);
   10695           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10696           0 :   __pyx_r = NULL;
   10697           0 :   __pyx_L0:;
   10698           0 :   __Pyx_XGIVEREF(__pyx_r);
   10699           0 :   __Pyx_RefNannyFinishContext();
   10700           0 :   return __pyx_r;
   10701             : }
   10702             : 
   10703             : /* "View.MemoryView":594
   10704             :  *         return self.view.itemsize
   10705             :  * 
   10706             :  *     @property             # <<<<<<<<<<<<<<
   10707             :  *     def nbytes(self):
   10708             :  *         return self.size * self.view.itemsize
   10709             :  */
   10710             : 
   10711             : /* Python wrapper */
   10712             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
   10713           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) {
   10714           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10715           0 :   PyObject *__pyx_r = 0;
   10716             :   __Pyx_RefNannyDeclarations
   10717           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10718           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10719           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10720             : 
   10721             :   /* function exit code */
   10722           0 :   __Pyx_RefNannyFinishContext();
   10723           0 :   return __pyx_r;
   10724             : }
   10725             : 
   10726           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10727           0 :   PyObject *__pyx_r = NULL;
   10728             :   __Pyx_RefNannyDeclarations
   10729           0 :   PyObject *__pyx_t_1 = NULL;
   10730           0 :   PyObject *__pyx_t_2 = NULL;
   10731           0 :   PyObject *__pyx_t_3 = NULL;
   10732           0 :   int __pyx_lineno = 0;
   10733           0 :   const char *__pyx_filename = NULL;
   10734           0 :   int __pyx_clineno = 0;
   10735           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10736             : 
   10737             :   /* "View.MemoryView":596
   10738             :  *     @property
   10739             :  *     def nbytes(self):
   10740             :  *         return self.size * self.view.itemsize             # <<<<<<<<<<<<<<
   10741             :  * 
   10742             :  *     @property
   10743             :  */
   10744           0 :   __Pyx_XDECREF(__pyx_r);
   10745           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 596, __pyx_L1_error)
   10746           0 :   __Pyx_GOTREF(__pyx_t_1);
   10747           0 :   __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 596, __pyx_L1_error)
   10748           0 :   __Pyx_GOTREF(__pyx_t_2);
   10749           0 :   __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 596, __pyx_L1_error)
   10750           0 :   __Pyx_GOTREF(__pyx_t_3);
   10751           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   10752           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   10753           0 :   __pyx_r = __pyx_t_3;
   10754           0 :   __pyx_t_3 = 0;
   10755           0 :   goto __pyx_L0;
   10756             : 
   10757             :   /* "View.MemoryView":594
   10758             :  *         return self.view.itemsize
   10759             :  * 
   10760             :  *     @property             # <<<<<<<<<<<<<<
   10761             :  *     def nbytes(self):
   10762             :  *         return self.size * self.view.itemsize
   10763             :  */
   10764             : 
   10765             :   /* function exit code */
   10766           0 :   __pyx_L1_error:;
   10767           0 :   __Pyx_XDECREF(__pyx_t_1);
   10768           0 :   __Pyx_XDECREF(__pyx_t_2);
   10769           0 :   __Pyx_XDECREF(__pyx_t_3);
   10770           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10771           0 :   __pyx_r = NULL;
   10772           0 :   __pyx_L0:;
   10773           0 :   __Pyx_XGIVEREF(__pyx_r);
   10774           0 :   __Pyx_RefNannyFinishContext();
   10775           0 :   return __pyx_r;
   10776             : }
   10777             : 
   10778             : /* "View.MemoryView":598
   10779             :  *         return self.size * self.view.itemsize
   10780             :  * 
   10781             :  *     @property             # <<<<<<<<<<<<<<
   10782             :  *     def size(self):
   10783             :  *         if self._size is None:
   10784             :  */
   10785             : 
   10786             : /* Python wrapper */
   10787             : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
   10788           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) {
   10789           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10790           0 :   PyObject *__pyx_r = 0;
   10791             :   __Pyx_RefNannyDeclarations
   10792           0 :   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
   10793           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10794           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10795             : 
   10796             :   /* function exit code */
   10797           0 :   __Pyx_RefNannyFinishContext();
   10798           0 :   return __pyx_r;
   10799             : }
   10800             : 
   10801           0 : static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10802           0 :   PyObject *__pyx_v_result = NULL;
   10803           0 :   PyObject *__pyx_v_length = NULL;
   10804           0 :   PyObject *__pyx_r = NULL;
   10805             :   __Pyx_RefNannyDeclarations
   10806           0 :   int __pyx_t_1;
   10807           0 :   Py_ssize_t *__pyx_t_2;
   10808           0 :   Py_ssize_t *__pyx_t_3;
   10809           0 :   Py_ssize_t *__pyx_t_4;
   10810           0 :   PyObject *__pyx_t_5 = NULL;
   10811           0 :   int __pyx_lineno = 0;
   10812           0 :   const char *__pyx_filename = NULL;
   10813           0 :   int __pyx_clineno = 0;
   10814           0 :   __Pyx_RefNannySetupContext("__get__", 1);
   10815             : 
   10816             :   /* "View.MemoryView":600
   10817             :  *     @property
   10818             :  *     def size(self):
   10819             :  *         if self._size is None:             # <<<<<<<<<<<<<<
   10820             :  *             result = 1
   10821             :  * 
   10822             :  */
   10823           0 :   __pyx_t_1 = (__pyx_v_self->_size == Py_None);
   10824           0 :   if (__pyx_t_1) {
   10825             : 
   10826             :     /* "View.MemoryView":601
   10827             :  *     def size(self):
   10828             :  *         if self._size is None:
   10829             :  *             result = 1             # <<<<<<<<<<<<<<
   10830             :  * 
   10831             :  *             for length in self.view.shape[:self.view.ndim]:
   10832             :  */
   10833           0 :     __Pyx_INCREF(__pyx_int_1);
   10834           0 :     __pyx_v_result = __pyx_int_1;
   10835             : 
   10836             :     /* "View.MemoryView":603
   10837             :  *             result = 1
   10838             :  * 
   10839             :  *             for length in self.view.shape[:self.view.ndim]:             # <<<<<<<<<<<<<<
   10840             :  *                 result *= length
   10841             :  * 
   10842             :  */
   10843           0 :     __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
   10844           0 :     for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
   10845           0 :       __pyx_t_2 = __pyx_t_4;
   10846           0 :       __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 603, __pyx_L1_error)
   10847           0 :       __Pyx_GOTREF(__pyx_t_5);
   10848           0 :       __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_5);
   10849           0 :       __pyx_t_5 = 0;
   10850             : 
   10851             :       /* "View.MemoryView":604
   10852             :  * 
   10853             :  *             for length in self.view.shape[:self.view.ndim]:
   10854             :  *                 result *= length             # <<<<<<<<<<<<<<
   10855             :  * 
   10856             :  *             self._size = result
   10857             :  */
   10858           0 :       __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error)
   10859           0 :       __Pyx_GOTREF(__pyx_t_5);
   10860           0 :       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5);
   10861           0 :       __pyx_t_5 = 0;
   10862             :     }
   10863             : 
   10864             :     /* "View.MemoryView":606
   10865             :  *                 result *= length
   10866             :  * 
   10867             :  *             self._size = result             # <<<<<<<<<<<<<<
   10868             :  * 
   10869             :  *         return self._size
   10870             :  */
   10871           0 :     __Pyx_INCREF(__pyx_v_result);
   10872           0 :     __Pyx_GIVEREF(__pyx_v_result);
   10873           0 :     __Pyx_GOTREF(__pyx_v_self->_size);
   10874           0 :     __Pyx_DECREF(__pyx_v_self->_size);
   10875           0 :     __pyx_v_self->_size = __pyx_v_result;
   10876             : 
   10877             :     /* "View.MemoryView":600
   10878             :  *     @property
   10879             :  *     def size(self):
   10880             :  *         if self._size is None:             # <<<<<<<<<<<<<<
   10881             :  *             result = 1
   10882             :  * 
   10883             :  */
   10884             :   }
   10885             : 
   10886             :   /* "View.MemoryView":608
   10887             :  *             self._size = result
   10888             :  * 
   10889             :  *         return self._size             # <<<<<<<<<<<<<<
   10890             :  * 
   10891             :  *     def __len__(self):
   10892             :  */
   10893           0 :   __Pyx_XDECREF(__pyx_r);
   10894           0 :   __Pyx_INCREF(__pyx_v_self->_size);
   10895           0 :   __pyx_r = __pyx_v_self->_size;
   10896           0 :   goto __pyx_L0;
   10897             : 
   10898             :   /* "View.MemoryView":598
   10899             :  *         return self.size * self.view.itemsize
   10900             :  * 
   10901             :  *     @property             # <<<<<<<<<<<<<<
   10902             :  *     def size(self):
   10903             :  *         if self._size is None:
   10904             :  */
   10905             : 
   10906             :   /* function exit code */
   10907           0 :   __pyx_L1_error:;
   10908           0 :   __Pyx_XDECREF(__pyx_t_5);
   10909           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   10910           0 :   __pyx_r = NULL;
   10911           0 :   __pyx_L0:;
   10912           0 :   __Pyx_XDECREF(__pyx_v_result);
   10913           0 :   __Pyx_XDECREF(__pyx_v_length);
   10914           0 :   __Pyx_XGIVEREF(__pyx_r);
   10915           0 :   __Pyx_RefNannyFinishContext();
   10916           0 :   return __pyx_r;
   10917             : }
   10918             : 
   10919             : /* "View.MemoryView":610
   10920             :  *         return self._size
   10921             :  * 
   10922             :  *     def __len__(self):             # <<<<<<<<<<<<<<
   10923             :  *         if self.view.ndim >= 1:
   10924             :  *             return self.view.shape[0]
   10925             :  */
   10926             : 
   10927             : /* Python wrapper */
   10928             : static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/
   10929           0 : static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) {
   10930           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   10931           0 :   Py_ssize_t __pyx_r;
   10932             :   __Pyx_RefNannyDeclarations
   10933           0 :   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
   10934           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   10935           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   10936             : 
   10937             :   /* function exit code */
   10938           0 :   __Pyx_RefNannyFinishContext();
   10939           0 :   return __pyx_r;
   10940             : }
   10941             : 
   10942           0 : static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) {
   10943           0 :   Py_ssize_t __pyx_r;
   10944           0 :   int __pyx_t_1;
   10945             : 
   10946             :   /* "View.MemoryView":611
   10947             :  * 
   10948             :  *     def __len__(self):
   10949             :  *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
   10950             :  *             return self.view.shape[0]
   10951             :  * 
   10952             :  */
   10953           0 :   __pyx_t_1 = (__pyx_v_self->view.ndim >= 1);
   10954           0 :   if (__pyx_t_1) {
   10955             : 
   10956             :     /* "View.MemoryView":612
   10957             :  *     def __len__(self):
   10958             :  *         if self.view.ndim >= 1:
   10959             :  *             return self.view.shape[0]             # <<<<<<<<<<<<<<
   10960             :  * 
   10961             :  *         return 0
   10962             :  */
   10963           0 :     __pyx_r = (__pyx_v_self->view.shape[0]);
   10964           0 :     goto __pyx_L0;
   10965             : 
   10966             :     /* "View.MemoryView":611
   10967             :  * 
   10968             :  *     def __len__(self):
   10969             :  *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
   10970             :  *             return self.view.shape[0]
   10971             :  * 
   10972             :  */
   10973             :   }
   10974             : 
   10975             :   /* "View.MemoryView":614
   10976             :  *             return self.view.shape[0]
   10977             :  * 
   10978             :  *         return 0             # <<<<<<<<<<<<<<
   10979             :  * 
   10980             :  *     def __repr__(self):
   10981             :  */
   10982           0 :   __pyx_r = 0;
   10983           0 :   goto __pyx_L0;
   10984             : 
   10985             :   /* "View.MemoryView":610
   10986             :  *         return self._size
   10987             :  * 
   10988             :  *     def __len__(self):             # <<<<<<<<<<<<<<
   10989             :  *         if self.view.ndim >= 1:
   10990             :  *             return self.view.shape[0]
   10991             :  */
   10992             : 
   10993             :   /* function exit code */
   10994           0 :   __pyx_L0:;
   10995           0 :   return __pyx_r;
   10996             : }
   10997             : 
   10998             : /* "View.MemoryView":616
   10999             :  *         return 0
   11000             :  * 
   11001             :  *     def __repr__(self):             # <<<<<<<<<<<<<<
   11002             :  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
   11003             :  *                                                id(self))
   11004             :  */
   11005             : 
   11006             : /* Python wrapper */
   11007             : static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/
   11008           0 : static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) {
   11009           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11010           0 :   PyObject *__pyx_r = 0;
   11011             :   __Pyx_RefNannyDeclarations
   11012           0 :   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
   11013           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   11014           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11015             : 
   11016             :   /* function exit code */
   11017           0 :   __Pyx_RefNannyFinishContext();
   11018           0 :   return __pyx_r;
   11019             : }
   11020             : 
   11021           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) {
   11022           0 :   PyObject *__pyx_r = NULL;
   11023             :   __Pyx_RefNannyDeclarations
   11024           0 :   PyObject *__pyx_t_1 = NULL;
   11025           0 :   PyObject *__pyx_t_2 = NULL;
   11026           0 :   PyObject *__pyx_t_3 = NULL;
   11027           0 :   int __pyx_lineno = 0;
   11028           0 :   const char *__pyx_filename = NULL;
   11029           0 :   int __pyx_clineno = 0;
   11030           0 :   __Pyx_RefNannySetupContext("__repr__", 1);
   11031             : 
   11032             :   /* "View.MemoryView":617
   11033             :  * 
   11034             :  *     def __repr__(self):
   11035             :  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
   11036             :  *                                                id(self))
   11037             :  * 
   11038             :  */
   11039           0 :   __Pyx_XDECREF(__pyx_r);
   11040           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error)
   11041           0 :   __Pyx_GOTREF(__pyx_t_1);
   11042           0 :   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error)
   11043           0 :   __Pyx_GOTREF(__pyx_t_2);
   11044           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   11045           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error)
   11046           0 :   __Pyx_GOTREF(__pyx_t_1);
   11047           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   11048             : 
   11049             :   /* "View.MemoryView":618
   11050             :  *     def __repr__(self):
   11051             :  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
   11052             :  *                                                id(self))             # <<<<<<<<<<<<<<
   11053             :  * 
   11054             :  *     def __str__(self):
   11055             :  */
   11056           0 :   __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error)
   11057           0 :   __Pyx_GOTREF(__pyx_t_2);
   11058             : 
   11059             :   /* "View.MemoryView":617
   11060             :  * 
   11061             :  *     def __repr__(self):
   11062             :  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
   11063             :  *                                                id(self))
   11064             :  * 
   11065             :  */
   11066           0 :   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 617, __pyx_L1_error)
   11067           0 :   __Pyx_GOTREF(__pyx_t_3);
   11068           0 :   __Pyx_GIVEREF(__pyx_t_1);
   11069           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error);
   11070           0 :   __Pyx_GIVEREF(__pyx_t_2);
   11071           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error);
   11072           0 :   __pyx_t_1 = 0;
   11073           0 :   __pyx_t_2 = 0;
   11074           0 :   __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error)
   11075           0 :   __Pyx_GOTREF(__pyx_t_2);
   11076           0 :   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   11077           0 :   __pyx_r = __pyx_t_2;
   11078           0 :   __pyx_t_2 = 0;
   11079           0 :   goto __pyx_L0;
   11080             : 
   11081             :   /* "View.MemoryView":616
   11082             :  *         return 0
   11083             :  * 
   11084             :  *     def __repr__(self):             # <<<<<<<<<<<<<<
   11085             :  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
   11086             :  *                                                id(self))
   11087             :  */
   11088             : 
   11089             :   /* function exit code */
   11090           0 :   __pyx_L1_error:;
   11091           0 :   __Pyx_XDECREF(__pyx_t_1);
   11092           0 :   __Pyx_XDECREF(__pyx_t_2);
   11093           0 :   __Pyx_XDECREF(__pyx_t_3);
   11094           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11095           0 :   __pyx_r = NULL;
   11096           0 :   __pyx_L0:;
   11097           0 :   __Pyx_XGIVEREF(__pyx_r);
   11098           0 :   __Pyx_RefNannyFinishContext();
   11099           0 :   return __pyx_r;
   11100             : }
   11101             : 
   11102             : /* "View.MemoryView":620
   11103             :  *                                                id(self))
   11104             :  * 
   11105             :  *     def __str__(self):             # <<<<<<<<<<<<<<
   11106             :  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
   11107             :  * 
   11108             :  */
   11109             : 
   11110             : /* Python wrapper */
   11111             : static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/
   11112           0 : static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) {
   11113           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11114           0 :   PyObject *__pyx_r = 0;
   11115             :   __Pyx_RefNannyDeclarations
   11116           0 :   __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
   11117           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   11118           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11119             : 
   11120             :   /* function exit code */
   11121           0 :   __Pyx_RefNannyFinishContext();
   11122           0 :   return __pyx_r;
   11123             : }
   11124             : 
   11125           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) {
   11126           0 :   PyObject *__pyx_r = NULL;
   11127             :   __Pyx_RefNannyDeclarations
   11128           0 :   PyObject *__pyx_t_1 = NULL;
   11129           0 :   PyObject *__pyx_t_2 = NULL;
   11130           0 :   int __pyx_lineno = 0;
   11131           0 :   const char *__pyx_filename = NULL;
   11132           0 :   int __pyx_clineno = 0;
   11133           0 :   __Pyx_RefNannySetupContext("__str__", 1);
   11134             : 
   11135             :   /* "View.MemoryView":621
   11136             :  * 
   11137             :  *     def __str__(self):
   11138             :  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)             # <<<<<<<<<<<<<<
   11139             :  * 
   11140             :  * 
   11141             :  */
   11142           0 :   __Pyx_XDECREF(__pyx_r);
   11143           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error)
   11144           0 :   __Pyx_GOTREF(__pyx_t_1);
   11145           0 :   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error)
   11146           0 :   __Pyx_GOTREF(__pyx_t_2);
   11147           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   11148           0 :   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error)
   11149           0 :   __Pyx_GOTREF(__pyx_t_1);
   11150           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   11151           0 :   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error)
   11152           0 :   __Pyx_GOTREF(__pyx_t_2);
   11153           0 :   __Pyx_GIVEREF(__pyx_t_1);
   11154           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error);
   11155           0 :   __pyx_t_1 = 0;
   11156           0 :   __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error)
   11157           0 :   __Pyx_GOTREF(__pyx_t_1);
   11158           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   11159           0 :   __pyx_r = __pyx_t_1;
   11160           0 :   __pyx_t_1 = 0;
   11161           0 :   goto __pyx_L0;
   11162             : 
   11163             :   /* "View.MemoryView":620
   11164             :  *                                                id(self))
   11165             :  * 
   11166             :  *     def __str__(self):             # <<<<<<<<<<<<<<
   11167             :  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
   11168             :  * 
   11169             :  */
   11170             : 
   11171             :   /* function exit code */
   11172           0 :   __pyx_L1_error:;
   11173           0 :   __Pyx_XDECREF(__pyx_t_1);
   11174           0 :   __Pyx_XDECREF(__pyx_t_2);
   11175           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11176           0 :   __pyx_r = NULL;
   11177           0 :   __pyx_L0:;
   11178           0 :   __Pyx_XGIVEREF(__pyx_r);
   11179           0 :   __Pyx_RefNannyFinishContext();
   11180           0 :   return __pyx_r;
   11181             : }
   11182             : 
   11183             : /* "View.MemoryView":624
   11184             :  * 
   11185             :  * 
   11186             :  *     def is_c_contig(self):             # <<<<<<<<<<<<<<
   11187             :  *         cdef __Pyx_memviewslice *mslice
   11188             :  *         cdef __Pyx_memviewslice tmp
   11189             :  */
   11190             : 
   11191             : /* Python wrapper */
   11192             : static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, 
   11193             : #if CYTHON_METH_FASTCALL
   11194             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11195             : #else
   11196             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11197             : #endif
   11198             : ); /*proto*/
   11199           0 : static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, 
   11200             : #if CYTHON_METH_FASTCALL
   11201             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11202             : #else
   11203             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11204             : #endif
   11205             : ) {
   11206             :   #if !CYTHON_METH_FASTCALL
   11207             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11208             :   #endif
   11209           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11210           0 :   PyObject *__pyx_r = 0;
   11211             :   __Pyx_RefNannyDeclarations
   11212           0 :   __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0);
   11213             :   #if !CYTHON_METH_FASTCALL
   11214             :   #if CYTHON_ASSUME_SAFE_MACROS
   11215             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11216             :   #else
   11217             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11218             :   #endif
   11219             :   #endif
   11220           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11221           0 :   if (unlikely(__pyx_nargs > 0)) {
   11222           0 :     __Pyx_RaiseArgtupleInvalid("is_c_contig", 1, 0, 0, __pyx_nargs); return NULL;}
   11223           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_c_contig", 0))) return NULL;
   11224           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11225             : 
   11226             :   /* function exit code */
   11227           0 :   __Pyx_RefNannyFinishContext();
   11228           0 :   return __pyx_r;
   11229             : }
   11230             : 
   11231           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
   11232           0 :   __Pyx_memviewslice *__pyx_v_mslice;
   11233           0 :   __Pyx_memviewslice __pyx_v_tmp;
   11234           0 :   PyObject *__pyx_r = NULL;
   11235             :   __Pyx_RefNannyDeclarations
   11236           0 :   __Pyx_memviewslice *__pyx_t_1;
   11237           0 :   PyObject *__pyx_t_2 = NULL;
   11238           0 :   int __pyx_lineno = 0;
   11239           0 :   const char *__pyx_filename = NULL;
   11240           0 :   int __pyx_clineno = 0;
   11241           0 :   __Pyx_RefNannySetupContext("is_c_contig", 1);
   11242             : 
   11243             :   /* "View.MemoryView":627
   11244             :  *         cdef __Pyx_memviewslice *mslice
   11245             :  *         cdef __Pyx_memviewslice tmp
   11246             :  *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
   11247             :  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
   11248             :  * 
   11249             :  */
   11250           0 :   __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 627, __pyx_L1_error)
   11251           0 :   __pyx_v_mslice = __pyx_t_1;
   11252             : 
   11253             :   /* "View.MemoryView":628
   11254             :  *         cdef __Pyx_memviewslice tmp
   11255             :  *         mslice = get_slice_from_memview(self, &tmp)
   11256             :  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)             # <<<<<<<<<<<<<<
   11257             :  * 
   11258             :  *     def is_f_contig(self):
   11259             :  */
   11260           0 :   __Pyx_XDECREF(__pyx_r);
   11261           0 :   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 628, __pyx_L1_error)
   11262           0 :   __Pyx_GOTREF(__pyx_t_2);
   11263           0 :   __pyx_r = __pyx_t_2;
   11264           0 :   __pyx_t_2 = 0;
   11265           0 :   goto __pyx_L0;
   11266             : 
   11267             :   /* "View.MemoryView":624
   11268             :  * 
   11269             :  * 
   11270             :  *     def is_c_contig(self):             # <<<<<<<<<<<<<<
   11271             :  *         cdef __Pyx_memviewslice *mslice
   11272             :  *         cdef __Pyx_memviewslice tmp
   11273             :  */
   11274             : 
   11275             :   /* function exit code */
   11276           0 :   __pyx_L1_error:;
   11277           0 :   __Pyx_XDECREF(__pyx_t_2);
   11278           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11279           0 :   __pyx_r = NULL;
   11280           0 :   __pyx_L0:;
   11281           0 :   __Pyx_XGIVEREF(__pyx_r);
   11282           0 :   __Pyx_RefNannyFinishContext();
   11283           0 :   return __pyx_r;
   11284             : }
   11285             : 
   11286             : /* "View.MemoryView":630
   11287             :  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
   11288             :  * 
   11289             :  *     def is_f_contig(self):             # <<<<<<<<<<<<<<
   11290             :  *         cdef __Pyx_memviewslice *mslice
   11291             :  *         cdef __Pyx_memviewslice tmp
   11292             :  */
   11293             : 
   11294             : /* Python wrapper */
   11295             : static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, 
   11296             : #if CYTHON_METH_FASTCALL
   11297             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11298             : #else
   11299             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11300             : #endif
   11301             : ); /*proto*/
   11302           0 : static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, 
   11303             : #if CYTHON_METH_FASTCALL
   11304             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11305             : #else
   11306             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11307             : #endif
   11308             : ) {
   11309             :   #if !CYTHON_METH_FASTCALL
   11310             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11311             :   #endif
   11312           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11313           0 :   PyObject *__pyx_r = 0;
   11314             :   __Pyx_RefNannyDeclarations
   11315           0 :   __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0);
   11316             :   #if !CYTHON_METH_FASTCALL
   11317             :   #if CYTHON_ASSUME_SAFE_MACROS
   11318             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11319             :   #else
   11320             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11321             :   #endif
   11322             :   #endif
   11323           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11324           0 :   if (unlikely(__pyx_nargs > 0)) {
   11325           0 :     __Pyx_RaiseArgtupleInvalid("is_f_contig", 1, 0, 0, __pyx_nargs); return NULL;}
   11326           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_f_contig", 0))) return NULL;
   11327           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11328             : 
   11329             :   /* function exit code */
   11330           0 :   __Pyx_RefNannyFinishContext();
   11331           0 :   return __pyx_r;
   11332             : }
   11333             : 
   11334           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
   11335           0 :   __Pyx_memviewslice *__pyx_v_mslice;
   11336           0 :   __Pyx_memviewslice __pyx_v_tmp;
   11337           0 :   PyObject *__pyx_r = NULL;
   11338             :   __Pyx_RefNannyDeclarations
   11339           0 :   __Pyx_memviewslice *__pyx_t_1;
   11340           0 :   PyObject *__pyx_t_2 = NULL;
   11341           0 :   int __pyx_lineno = 0;
   11342           0 :   const char *__pyx_filename = NULL;
   11343           0 :   int __pyx_clineno = 0;
   11344           0 :   __Pyx_RefNannySetupContext("is_f_contig", 1);
   11345             : 
   11346             :   /* "View.MemoryView":633
   11347             :  *         cdef __Pyx_memviewslice *mslice
   11348             :  *         cdef __Pyx_memviewslice tmp
   11349             :  *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
   11350             :  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
   11351             :  * 
   11352             :  */
   11353           0 :   __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 633, __pyx_L1_error)
   11354           0 :   __pyx_v_mslice = __pyx_t_1;
   11355             : 
   11356             :   /* "View.MemoryView":634
   11357             :  *         cdef __Pyx_memviewslice tmp
   11358             :  *         mslice = get_slice_from_memview(self, &tmp)
   11359             :  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)             # <<<<<<<<<<<<<<
   11360             :  * 
   11361             :  *     def copy(self):
   11362             :  */
   11363           0 :   __Pyx_XDECREF(__pyx_r);
   11364           0 :   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 634, __pyx_L1_error)
   11365           0 :   __Pyx_GOTREF(__pyx_t_2);
   11366           0 :   __pyx_r = __pyx_t_2;
   11367           0 :   __pyx_t_2 = 0;
   11368           0 :   goto __pyx_L0;
   11369             : 
   11370             :   /* "View.MemoryView":630
   11371             :  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
   11372             :  * 
   11373             :  *     def is_f_contig(self):             # <<<<<<<<<<<<<<
   11374             :  *         cdef __Pyx_memviewslice *mslice
   11375             :  *         cdef __Pyx_memviewslice tmp
   11376             :  */
   11377             : 
   11378             :   /* function exit code */
   11379           0 :   __pyx_L1_error:;
   11380           0 :   __Pyx_XDECREF(__pyx_t_2);
   11381           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11382           0 :   __pyx_r = NULL;
   11383           0 :   __pyx_L0:;
   11384           0 :   __Pyx_XGIVEREF(__pyx_r);
   11385           0 :   __Pyx_RefNannyFinishContext();
   11386           0 :   return __pyx_r;
   11387             : }
   11388             : 
   11389             : /* "View.MemoryView":636
   11390             :  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
   11391             :  * 
   11392             :  *     def copy(self):             # <<<<<<<<<<<<<<
   11393             :  *         cdef __Pyx_memviewslice mslice
   11394             :  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
   11395             :  */
   11396             : 
   11397             : /* Python wrapper */
   11398             : static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, 
   11399             : #if CYTHON_METH_FASTCALL
   11400             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11401             : #else
   11402             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11403             : #endif
   11404             : ); /*proto*/
   11405           0 : static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, 
   11406             : #if CYTHON_METH_FASTCALL
   11407             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11408             : #else
   11409             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11410             : #endif
   11411             : ) {
   11412             :   #if !CYTHON_METH_FASTCALL
   11413             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11414             :   #endif
   11415           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11416           0 :   PyObject *__pyx_r = 0;
   11417             :   __Pyx_RefNannyDeclarations
   11418           0 :   __Pyx_RefNannySetupContext("copy (wrapper)", 0);
   11419             :   #if !CYTHON_METH_FASTCALL
   11420             :   #if CYTHON_ASSUME_SAFE_MACROS
   11421             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11422             :   #else
   11423             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11424             :   #endif
   11425             :   #endif
   11426           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11427           0 :   if (unlikely(__pyx_nargs > 0)) {
   11428           0 :     __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
   11429           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
   11430           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11431             : 
   11432             :   /* function exit code */
   11433           0 :   __Pyx_RefNannyFinishContext();
   11434           0 :   return __pyx_r;
   11435             : }
   11436             : 
   11437           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) {
   11438           0 :   __Pyx_memviewslice __pyx_v_mslice;
   11439           0 :   int __pyx_v_flags;
   11440           0 :   PyObject *__pyx_r = NULL;
   11441             :   __Pyx_RefNannyDeclarations
   11442           0 :   __Pyx_memviewslice __pyx_t_1;
   11443           0 :   PyObject *__pyx_t_2 = NULL;
   11444           0 :   int __pyx_lineno = 0;
   11445           0 :   const char *__pyx_filename = NULL;
   11446           0 :   int __pyx_clineno = 0;
   11447           0 :   __Pyx_RefNannySetupContext("copy", 1);
   11448             : 
   11449             :   /* "View.MemoryView":638
   11450             :  *     def copy(self):
   11451             :  *         cdef __Pyx_memviewslice mslice
   11452             :  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS             # <<<<<<<<<<<<<<
   11453             :  * 
   11454             :  *         slice_copy(self, &mslice)
   11455             :  */
   11456           0 :   __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS));
   11457             : 
   11458             :   /* "View.MemoryView":640
   11459             :  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
   11460             :  * 
   11461             :  *         slice_copy(self, &mslice)             # <<<<<<<<<<<<<<
   11462             :  *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,
   11463             :  *                                    self.view.itemsize,
   11464             :  */
   11465           0 :   __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice));
   11466             : 
   11467             :   /* "View.MemoryView":641
   11468             :  * 
   11469             :  *         slice_copy(self, &mslice)
   11470             :  *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,             # <<<<<<<<<<<<<<
   11471             :  *                                    self.view.itemsize,
   11472             :  *                                    flags|PyBUF_C_CONTIGUOUS,
   11473             :  */
   11474           0 :   __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 641, __pyx_L1_error)
   11475           0 :   __pyx_v_mslice = __pyx_t_1;
   11476             : 
   11477             :   /* "View.MemoryView":646
   11478             :  *                                    self.dtype_is_object)
   11479             :  * 
   11480             :  *         return memoryview_copy_from_slice(self, &mslice)             # <<<<<<<<<<<<<<
   11481             :  * 
   11482             :  *     def copy_fortran(self):
   11483             :  */
   11484           0 :   __Pyx_XDECREF(__pyx_r);
   11485           0 :   __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 646, __pyx_L1_error)
   11486           0 :   __Pyx_GOTREF(__pyx_t_2);
   11487           0 :   __pyx_r = __pyx_t_2;
   11488           0 :   __pyx_t_2 = 0;
   11489           0 :   goto __pyx_L0;
   11490             : 
   11491             :   /* "View.MemoryView":636
   11492             :  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
   11493             :  * 
   11494             :  *     def copy(self):             # <<<<<<<<<<<<<<
   11495             :  *         cdef __Pyx_memviewslice mslice
   11496             :  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
   11497             :  */
   11498             : 
   11499             :   /* function exit code */
   11500           0 :   __pyx_L1_error:;
   11501           0 :   __Pyx_XDECREF(__pyx_t_2);
   11502           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11503           0 :   __pyx_r = NULL;
   11504           0 :   __pyx_L0:;
   11505           0 :   __Pyx_XGIVEREF(__pyx_r);
   11506           0 :   __Pyx_RefNannyFinishContext();
   11507           0 :   return __pyx_r;
   11508             : }
   11509             : 
   11510             : /* "View.MemoryView":648
   11511             :  *         return memoryview_copy_from_slice(self, &mslice)
   11512             :  * 
   11513             :  *     def copy_fortran(self):             # <<<<<<<<<<<<<<
   11514             :  *         cdef __Pyx_memviewslice src, dst
   11515             :  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
   11516             :  */
   11517             : 
   11518             : /* Python wrapper */
   11519             : static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, 
   11520             : #if CYTHON_METH_FASTCALL
   11521             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11522             : #else
   11523             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11524             : #endif
   11525             : ); /*proto*/
   11526           0 : static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, 
   11527             : #if CYTHON_METH_FASTCALL
   11528             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11529             : #else
   11530             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11531             : #endif
   11532             : ) {
   11533             :   #if !CYTHON_METH_FASTCALL
   11534             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11535             :   #endif
   11536           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11537           0 :   PyObject *__pyx_r = 0;
   11538             :   __Pyx_RefNannyDeclarations
   11539           0 :   __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0);
   11540             :   #if !CYTHON_METH_FASTCALL
   11541             :   #if CYTHON_ASSUME_SAFE_MACROS
   11542             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11543             :   #else
   11544             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11545             :   #endif
   11546             :   #endif
   11547           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11548           0 :   if (unlikely(__pyx_nargs > 0)) {
   11549           0 :     __Pyx_RaiseArgtupleInvalid("copy_fortran", 1, 0, 0, __pyx_nargs); return NULL;}
   11550           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy_fortran", 0))) return NULL;
   11551           0 :   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11552             : 
   11553             :   /* function exit code */
   11554           0 :   __Pyx_RefNannyFinishContext();
   11555           0 :   return __pyx_r;
   11556             : }
   11557             : 
   11558           0 : static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) {
   11559           0 :   __Pyx_memviewslice __pyx_v_src;
   11560           0 :   __Pyx_memviewslice __pyx_v_dst;
   11561           0 :   int __pyx_v_flags;
   11562           0 :   PyObject *__pyx_r = NULL;
   11563             :   __Pyx_RefNannyDeclarations
   11564           0 :   __Pyx_memviewslice __pyx_t_1;
   11565           0 :   PyObject *__pyx_t_2 = NULL;
   11566           0 :   int __pyx_lineno = 0;
   11567           0 :   const char *__pyx_filename = NULL;
   11568           0 :   int __pyx_clineno = 0;
   11569           0 :   __Pyx_RefNannySetupContext("copy_fortran", 1);
   11570             : 
   11571             :   /* "View.MemoryView":650
   11572             :  *     def copy_fortran(self):
   11573             :  *         cdef __Pyx_memviewslice src, dst
   11574             :  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS             # <<<<<<<<<<<<<<
   11575             :  * 
   11576             :  *         slice_copy(self, &src)
   11577             :  */
   11578           0 :   __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS));
   11579             : 
   11580             :   /* "View.MemoryView":652
   11581             :  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
   11582             :  * 
   11583             :  *         slice_copy(self, &src)             # <<<<<<<<<<<<<<
   11584             :  *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,
   11585             :  *                                 self.view.itemsize,
   11586             :  */
   11587           0 :   __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src));
   11588             : 
   11589             :   /* "View.MemoryView":653
   11590             :  * 
   11591             :  *         slice_copy(self, &src)
   11592             :  *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,             # <<<<<<<<<<<<<<
   11593             :  *                                 self.view.itemsize,
   11594             :  *                                 flags|PyBUF_F_CONTIGUOUS,
   11595             :  */
   11596           0 :   __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 653, __pyx_L1_error)
   11597           0 :   __pyx_v_dst = __pyx_t_1;
   11598             : 
   11599             :   /* "View.MemoryView":658
   11600             :  *                                 self.dtype_is_object)
   11601             :  * 
   11602             :  *         return memoryview_copy_from_slice(self, &dst)             # <<<<<<<<<<<<<<
   11603             :  * 
   11604             :  * 
   11605             :  */
   11606           0 :   __Pyx_XDECREF(__pyx_r);
   11607           0 :   __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error)
   11608           0 :   __Pyx_GOTREF(__pyx_t_2);
   11609           0 :   __pyx_r = __pyx_t_2;
   11610           0 :   __pyx_t_2 = 0;
   11611           0 :   goto __pyx_L0;
   11612             : 
   11613             :   /* "View.MemoryView":648
   11614             :  *         return memoryview_copy_from_slice(self, &mslice)
   11615             :  * 
   11616             :  *     def copy_fortran(self):             # <<<<<<<<<<<<<<
   11617             :  *         cdef __Pyx_memviewslice src, dst
   11618             :  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
   11619             :  */
   11620             : 
   11621             :   /* function exit code */
   11622           0 :   __pyx_L1_error:;
   11623           0 :   __Pyx_XDECREF(__pyx_t_2);
   11624           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11625           0 :   __pyx_r = NULL;
   11626           0 :   __pyx_L0:;
   11627           0 :   __Pyx_XGIVEREF(__pyx_r);
   11628           0 :   __Pyx_RefNannyFinishContext();
   11629           0 :   return __pyx_r;
   11630             : }
   11631             : 
   11632             : /* "(tree fragment)":1
   11633             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
   11634             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11635             :  * def __setstate_cython__(self, __pyx_state):
   11636             :  */
   11637             : 
   11638             : /* Python wrapper */
   11639             : static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, 
   11640             : #if CYTHON_METH_FASTCALL
   11641             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11642             : #else
   11643             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11644             : #endif
   11645             : ); /*proto*/
   11646           0 : static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, 
   11647             : #if CYTHON_METH_FASTCALL
   11648             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11649             : #else
   11650             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11651             : #endif
   11652             : ) {
   11653             :   #if !CYTHON_METH_FASTCALL
   11654             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11655             :   #endif
   11656           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11657           0 :   PyObject *__pyx_r = 0;
   11658             :   __Pyx_RefNannyDeclarations
   11659           0 :   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
   11660             :   #if !CYTHON_METH_FASTCALL
   11661             :   #if CYTHON_ASSUME_SAFE_MACROS
   11662             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11663             :   #else
   11664             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11665             :   #endif
   11666             :   #endif
   11667           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11668           0 :   if (unlikely(__pyx_nargs > 0)) {
   11669           0 :     __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
   11670           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
   11671           0 :   __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self));
   11672             : 
   11673             :   /* function exit code */
   11674           0 :   __Pyx_RefNannyFinishContext();
   11675           0 :   return __pyx_r;
   11676             : }
   11677             : 
   11678           0 : static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) {
   11679           0 :   PyObject *__pyx_r = NULL;
   11680             :   __Pyx_RefNannyDeclarations
   11681           0 :   int __pyx_lineno = 0;
   11682           0 :   const char *__pyx_filename = NULL;
   11683           0 :   int __pyx_clineno = 0;
   11684           0 :   __Pyx_RefNannySetupContext("__reduce_cython__", 1);
   11685             : 
   11686             :   /* "(tree fragment)":2
   11687             :  * def __reduce_cython__(self):
   11688             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
   11689             :  * def __setstate_cython__(self, __pyx_state):
   11690             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11691             :  */
   11692           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
   11693           0 :   __PYX_ERR(1, 2, __pyx_L1_error)
   11694             : 
   11695             :   /* "(tree fragment)":1
   11696             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
   11697             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11698             :  * def __setstate_cython__(self, __pyx_state):
   11699             :  */
   11700             : 
   11701             :   /* function exit code */
   11702           0 :   __pyx_L1_error:;
   11703           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11704           0 :   __pyx_r = NULL;
   11705           0 :   __Pyx_XGIVEREF(__pyx_r);
   11706           0 :   __Pyx_RefNannyFinishContext();
   11707           0 :   return __pyx_r;
   11708             : }
   11709             : 
   11710             : /* "(tree fragment)":3
   11711             :  * def __reduce_cython__(self):
   11712             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11713             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
   11714             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11715             :  */
   11716             : 
   11717             : /* Python wrapper */
   11718             : static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, 
   11719             : #if CYTHON_METH_FASTCALL
   11720             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11721             : #else
   11722             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11723             : #endif
   11724             : ); /*proto*/
   11725           0 : static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, 
   11726             : #if CYTHON_METH_FASTCALL
   11727             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   11728             : #else
   11729             : PyObject *__pyx_args, PyObject *__pyx_kwds
   11730             : #endif
   11731             : ) {
   11732           0 :   CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
   11733             :   #if !CYTHON_METH_FASTCALL
   11734             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   11735             :   #endif
   11736           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   11737           0 :   PyObject* values[1] = {0};
   11738           0 :   int __pyx_lineno = 0;
   11739           0 :   const char *__pyx_filename = NULL;
   11740           0 :   int __pyx_clineno = 0;
   11741           0 :   PyObject *__pyx_r = 0;
   11742             :   __Pyx_RefNannyDeclarations
   11743           0 :   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
   11744             :   #if !CYTHON_METH_FASTCALL
   11745             :   #if CYTHON_ASSUME_SAFE_MACROS
   11746             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   11747             :   #else
   11748             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   11749             :   #endif
   11750             :   #endif
   11751           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   11752             :   {
   11753           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
   11754           0 :     if (__pyx_kwds) {
   11755           0 :       Py_ssize_t kw_args;
   11756           0 :       switch (__pyx_nargs) {
   11757           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   11758           0 :         CYTHON_FALLTHROUGH;
   11759           0 :         case  0: break;
   11760           0 :         default: goto __pyx_L5_argtuple_error;
   11761             :       }
   11762           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
   11763           0 :       switch (__pyx_nargs) {
   11764             :         case  0:
   11765           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
   11766           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
   11767           0 :           kw_args--;
   11768             :         }
   11769           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error)
   11770           0 :         else goto __pyx_L5_argtuple_error;
   11771             :       }
   11772           0 :       if (unlikely(kw_args > 0)) {
   11773           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   11774           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error)
   11775             :       }
   11776           0 :     } else if (unlikely(__pyx_nargs != 1)) {
   11777           0 :       goto __pyx_L5_argtuple_error;
   11778             :     } else {
   11779           0 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   11780             :     }
   11781           0 :     __pyx_v___pyx_state = values[0];
   11782             :   }
   11783           0 :   goto __pyx_L6_skip;
   11784           0 :   __pyx_L5_argtuple_error:;
   11785           0 :   __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
   11786           0 :   __pyx_L6_skip:;
   11787           0 :   goto __pyx_L4_argument_unpacking_done;
   11788           0 :   __pyx_L3_error:;
   11789             :   {
   11790           0 :     Py_ssize_t __pyx_temp;
   11791           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   11792             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   11793             :     }
   11794             :   }
   11795           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11796           0 :   __Pyx_RefNannyFinishContext();
   11797           0 :   return NULL;
   11798           0 :   __pyx_L4_argument_unpacking_done:;
   11799           0 :   __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v___pyx_state);
   11800             : 
   11801             :   /* function exit code */
   11802             :   {
   11803           0 :     Py_ssize_t __pyx_temp;
   11804           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   11805             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   11806             :     }
   11807             :   }
   11808             :   __Pyx_RefNannyFinishContext();
   11809             :   return __pyx_r;
   11810             : }
   11811             : 
   11812           0 : static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
   11813           0 :   PyObject *__pyx_r = NULL;
   11814             :   __Pyx_RefNannyDeclarations
   11815           0 :   int __pyx_lineno = 0;
   11816           0 :   const char *__pyx_filename = NULL;
   11817           0 :   int __pyx_clineno = 0;
   11818           0 :   __Pyx_RefNannySetupContext("__setstate_cython__", 1);
   11819             : 
   11820             :   /* "(tree fragment)":4
   11821             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11822             :  * def __setstate_cython__(self, __pyx_state):
   11823             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
   11824             :  */
   11825           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
   11826           0 :   __PYX_ERR(1, 4, __pyx_L1_error)
   11827             : 
   11828             :   /* "(tree fragment)":3
   11829             :  * def __reduce_cython__(self):
   11830             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11831             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
   11832             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   11833             :  */
   11834             : 
   11835             :   /* function exit code */
   11836           0 :   __pyx_L1_error:;
   11837           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11838           0 :   __pyx_r = NULL;
   11839           0 :   __Pyx_XGIVEREF(__pyx_r);
   11840           0 :   __Pyx_RefNannyFinishContext();
   11841           0 :   return __pyx_r;
   11842             : }
   11843             : 
   11844             : /* "View.MemoryView":662
   11845             :  * 
   11846             :  * @cname('__pyx_memoryview_new')
   11847             :  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
   11848             :  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
   11849             :  *     result.typeinfo = typeinfo
   11850             :  */
   11851             : 
   11852         405 : static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) {
   11853         405 :   struct __pyx_memoryview_obj *__pyx_v_result = 0;
   11854         405 :   PyObject *__pyx_r = NULL;
   11855             :   __Pyx_RefNannyDeclarations
   11856         405 :   PyObject *__pyx_t_1 = NULL;
   11857         405 :   PyObject *__pyx_t_2 = NULL;
   11858         405 :   PyObject *__pyx_t_3 = NULL;
   11859         405 :   int __pyx_lineno = 0;
   11860         405 :   const char *__pyx_filename = NULL;
   11861         405 :   int __pyx_clineno = 0;
   11862         405 :   __Pyx_RefNannySetupContext("memoryview_cwrapper", 1);
   11863             : 
   11864             :   /* "View.MemoryView":663
   11865             :  * @cname('__pyx_memoryview_new')
   11866             :  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
   11867             :  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)             # <<<<<<<<<<<<<<
   11868             :  *     result.typeinfo = typeinfo
   11869             :  *     return result
   11870             :  */
   11871         405 :   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error)
   11872         405 :   __Pyx_GOTREF(__pyx_t_1);
   11873         405 :   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error)
   11874         405 :   __Pyx_GOTREF(__pyx_t_2);
   11875         405 :   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 663, __pyx_L1_error)
   11876         405 :   __Pyx_GOTREF(__pyx_t_3);
   11877         405 :   __Pyx_INCREF(__pyx_v_o);
   11878         405 :   __Pyx_GIVEREF(__pyx_v_o);
   11879         405 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o)) __PYX_ERR(1, 663, __pyx_L1_error);
   11880         405 :   __Pyx_GIVEREF(__pyx_t_1);
   11881         405 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error);
   11882         405 :   __Pyx_GIVEREF(__pyx_t_2);
   11883         405 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error);
   11884         405 :   __pyx_t_1 = 0;
   11885         405 :   __pyx_t_2 = 0;
   11886         405 :   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error)
   11887         405 :   __Pyx_GOTREF(__pyx_t_2);
   11888         405 :   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   11889         405 :   __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2);
   11890         405 :   __pyx_t_2 = 0;
   11891             : 
   11892             :   /* "View.MemoryView":664
   11893             :  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
   11894             :  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
   11895             :  *     result.typeinfo = typeinfo             # <<<<<<<<<<<<<<
   11896             :  *     return result
   11897             :  * 
   11898             :  */
   11899         405 :   __pyx_v_result->typeinfo = __pyx_v_typeinfo;
   11900             : 
   11901             :   /* "View.MemoryView":665
   11902             :  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
   11903             :  *     result.typeinfo = typeinfo
   11904             :  *     return result             # <<<<<<<<<<<<<<
   11905             :  * 
   11906             :  * @cname('__pyx_memoryview_check')
   11907             :  */
   11908         405 :   __Pyx_XDECREF(__pyx_r);
   11909         405 :   __Pyx_INCREF((PyObject *)__pyx_v_result);
   11910         405 :   __pyx_r = ((PyObject *)__pyx_v_result);
   11911         405 :   goto __pyx_L0;
   11912             : 
   11913             :   /* "View.MemoryView":662
   11914             :  * 
   11915             :  * @cname('__pyx_memoryview_new')
   11916             :  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
   11917             :  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
   11918             :  *     result.typeinfo = typeinfo
   11919             :  */
   11920             : 
   11921             :   /* function exit code */
   11922           0 :   __pyx_L1_error:;
   11923           0 :   __Pyx_XDECREF(__pyx_t_1);
   11924           0 :   __Pyx_XDECREF(__pyx_t_2);
   11925           0 :   __Pyx_XDECREF(__pyx_t_3);
   11926           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
   11927           0 :   __pyx_r = 0;
   11928         405 :   __pyx_L0:;
   11929         405 :   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   11930         405 :   __Pyx_XGIVEREF(__pyx_r);
   11931         405 :   __Pyx_RefNannyFinishContext();
   11932         405 :   return __pyx_r;
   11933             : }
   11934             : 
   11935             : /* "View.MemoryView":668
   11936             :  * 
   11937             :  * @cname('__pyx_memoryview_check')
   11938             :  * cdef inline bint memoryview_check(object o) noexcept:             # <<<<<<<<<<<<<<
   11939             :  *     return isinstance(o, memoryview)
   11940             :  * 
   11941             :  */
   11942             : 
   11943         408 : static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) {
   11944         408 :   int __pyx_r;
   11945         408 :   int __pyx_t_1;
   11946             : 
   11947             :   /* "View.MemoryView":669
   11948             :  * @cname('__pyx_memoryview_check')
   11949             :  * cdef inline bint memoryview_check(object o) noexcept:
   11950             :  *     return isinstance(o, memoryview)             # <<<<<<<<<<<<<<
   11951             :  * 
   11952             :  * cdef tuple _unellipsify(object index, int ndim):
   11953             :  */
   11954         408 :   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); 
   11955         408 :   __pyx_r = __pyx_t_1;
   11956         408 :   goto __pyx_L0;
   11957             : 
   11958             :   /* "View.MemoryView":668
   11959             :  * 
   11960             :  * @cname('__pyx_memoryview_check')
   11961             :  * cdef inline bint memoryview_check(object o) noexcept:             # <<<<<<<<<<<<<<
   11962             :  *     return isinstance(o, memoryview)
   11963             :  * 
   11964             :  */
   11965             : 
   11966             :   /* function exit code */
   11967         408 :   __pyx_L0:;
   11968         408 :   return __pyx_r;
   11969             : }
   11970             : 
   11971             : /* "View.MemoryView":671
   11972             :  *     return isinstance(o, memoryview)
   11973             :  * 
   11974             :  * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
   11975             :  *     """
   11976             :  *     Replace all ellipses with full slices and fill incomplete indices with
   11977             :  */
   11978             : 
   11979           0 : static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
   11980           0 :   Py_ssize_t __pyx_v_idx;
   11981           0 :   PyObject *__pyx_v_tup = NULL;
   11982           0 :   PyObject *__pyx_v_result = NULL;
   11983           0 :   int __pyx_v_have_slices;
   11984           0 :   int __pyx_v_seen_ellipsis;
   11985           0 :   PyObject *__pyx_v_item = NULL;
   11986           0 :   Py_ssize_t __pyx_v_nslices;
   11987           0 :   PyObject *__pyx_r = NULL;
   11988             :   __Pyx_RefNannyDeclarations
   11989           0 :   PyObject *__pyx_t_1 = NULL;
   11990           0 :   int __pyx_t_2;
   11991           0 :   PyObject *__pyx_t_3 = NULL;
   11992           0 :   Py_ssize_t __pyx_t_4;
   11993           0 :   Py_ssize_t __pyx_t_5;
   11994           0 :   Py_UCS4 __pyx_t_6;
   11995           0 :   PyObject *__pyx_t_7 = NULL;
   11996           0 :   int __pyx_lineno = 0;
   11997           0 :   const char *__pyx_filename = NULL;
   11998           0 :   int __pyx_clineno = 0;
   11999           0 :   __Pyx_RefNannySetupContext("_unellipsify", 1);
   12000             : 
   12001             :   /* "View.MemoryView":677
   12002             :  *     """
   12003             :  *     cdef Py_ssize_t idx
   12004             :  *     tup = <tuple>index if isinstance(index, tuple) else (index,)             # <<<<<<<<<<<<<<
   12005             :  * 
   12006             :  *     result = [slice(None)] * ndim
   12007             :  */
   12008           0 :   __pyx_t_2 = PyTuple_Check(__pyx_v_index); 
   12009           0 :   if (__pyx_t_2) {
   12010           0 :     __Pyx_INCREF(((PyObject*)__pyx_v_index));
   12011             :     __pyx_t_1 = __pyx_v_index;
   12012             :   } else {
   12013           0 :     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 677, __pyx_L1_error)
   12014           0 :     __Pyx_GOTREF(__pyx_t_3);
   12015           0 :     __Pyx_INCREF(__pyx_v_index);
   12016           0 :     __Pyx_GIVEREF(__pyx_v_index);
   12017           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index)) __PYX_ERR(1, 677, __pyx_L1_error);
   12018           0 :     __pyx_t_1 = __pyx_t_3;
   12019           0 :     __pyx_t_3 = 0;
   12020             :   }
   12021           0 :   __pyx_v_tup = ((PyObject*)__pyx_t_1);
   12022           0 :   __pyx_t_1 = 0;
   12023             : 
   12024             :   /* "View.MemoryView":679
   12025             :  *     tup = <tuple>index if isinstance(index, tuple) else (index,)
   12026             :  * 
   12027             :  *     result = [slice(None)] * ndim             # <<<<<<<<<<<<<<
   12028             :  *     have_slices = False
   12029             :  *     seen_ellipsis = False
   12030             :  */
   12031           0 :   __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error)
   12032             :   __Pyx_GOTREF(__pyx_t_1);
   12033             :   { Py_ssize_t __pyx_temp;
   12034           0 :     for (__pyx_temp=0; __pyx_temp < __pyx_v_ndim; __pyx_temp++) {
   12035           0 :       __Pyx_INCREF(__pyx_slice__5);
   12036           0 :       __Pyx_GIVEREF(__pyx_slice__5);
   12037           0 :       if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_slice__5)) __PYX_ERR(1, 679, __pyx_L1_error);
   12038             :     }
   12039             :   }
   12040           0 :   __pyx_v_result = ((PyObject*)__pyx_t_1);
   12041           0 :   __pyx_t_1 = 0;
   12042             : 
   12043             :   /* "View.MemoryView":680
   12044             :  * 
   12045             :  *     result = [slice(None)] * ndim
   12046             :  *     have_slices = False             # <<<<<<<<<<<<<<
   12047             :  *     seen_ellipsis = False
   12048             :  *     idx = 0
   12049             :  */
   12050           0 :   __pyx_v_have_slices = 0;
   12051             : 
   12052             :   /* "View.MemoryView":681
   12053             :  *     result = [slice(None)] * ndim
   12054             :  *     have_slices = False
   12055             :  *     seen_ellipsis = False             # <<<<<<<<<<<<<<
   12056             :  *     idx = 0
   12057             :  *     for item in tup:
   12058             :  */
   12059           0 :   __pyx_v_seen_ellipsis = 0;
   12060             : 
   12061             :   /* "View.MemoryView":682
   12062             :  *     have_slices = False
   12063             :  *     seen_ellipsis = False
   12064             :  *     idx = 0             # <<<<<<<<<<<<<<
   12065             :  *     for item in tup:
   12066             :  *         if item is Ellipsis:
   12067             :  */
   12068           0 :   __pyx_v_idx = 0;
   12069             : 
   12070             :   /* "View.MemoryView":683
   12071             :  *     seen_ellipsis = False
   12072             :  *     idx = 0
   12073             :  *     for item in tup:             # <<<<<<<<<<<<<<
   12074             :  *         if item is Ellipsis:
   12075             :  *             if not seen_ellipsis:
   12076             :  */
   12077           0 :   if (unlikely(__pyx_v_tup == Py_None)) {
   12078           0 :     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   12079           0 :     __PYX_ERR(1, 683, __pyx_L1_error)
   12080             :   }
   12081           0 :   __pyx_t_1 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_1);
   12082             :   __pyx_t_4 = 0;
   12083           0 :   for (;;) {
   12084           0 :     {
   12085           0 :       Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
   12086             :       #if !CYTHON_ASSUME_SAFE_MACROS
   12087             :       if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 683, __pyx_L1_error)
   12088             :       #endif
   12089           0 :       if (__pyx_t_4 >= __pyx_temp) break;
   12090             :     }
   12091             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   12092           0 :     __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(1, 683, __pyx_L1_error)
   12093             :     #else
   12094             :     __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 683, __pyx_L1_error)
   12095             :     __Pyx_GOTREF(__pyx_t_3);
   12096             :     #endif
   12097           0 :     __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3);
   12098           0 :     __pyx_t_3 = 0;
   12099             : 
   12100             :     /* "View.MemoryView":684
   12101             :  *     idx = 0
   12102             :  *     for item in tup:
   12103             :  *         if item is Ellipsis:             # <<<<<<<<<<<<<<
   12104             :  *             if not seen_ellipsis:
   12105             :  *                 idx += ndim - len(tup)
   12106             :  */
   12107           0 :     __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis);
   12108           0 :     if (__pyx_t_2) {
   12109             : 
   12110             :       /* "View.MemoryView":685
   12111             :  *     for item in tup:
   12112             :  *         if item is Ellipsis:
   12113             :  *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
   12114             :  *                 idx += ndim - len(tup)
   12115             :  *                 seen_ellipsis = True
   12116             :  */
   12117           0 :       __pyx_t_2 = (!__pyx_v_seen_ellipsis);
   12118           0 :       if (__pyx_t_2) {
   12119             : 
   12120             :         /* "View.MemoryView":686
   12121             :  *         if item is Ellipsis:
   12122             :  *             if not seen_ellipsis:
   12123             :  *                 idx += ndim - len(tup)             # <<<<<<<<<<<<<<
   12124             :  *                 seen_ellipsis = True
   12125             :  *             have_slices = True
   12126             :  */
   12127           0 :         if (unlikely(__pyx_v_tup == Py_None)) {
   12128             :           PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
   12129             :           __PYX_ERR(1, 686, __pyx_L1_error)
   12130             :         }
   12131           0 :         __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 686, __pyx_L1_error)
   12132           0 :         __pyx_v_idx = (__pyx_v_idx + (__pyx_v_ndim - __pyx_t_5));
   12133             : 
   12134             :         /* "View.MemoryView":687
   12135             :  *             if not seen_ellipsis:
   12136             :  *                 idx += ndim - len(tup)
   12137             :  *                 seen_ellipsis = True             # <<<<<<<<<<<<<<
   12138             :  *             have_slices = True
   12139             :  *         else:
   12140             :  */
   12141           0 :         __pyx_v_seen_ellipsis = 1;
   12142             : 
   12143             :         /* "View.MemoryView":685
   12144             :  *     for item in tup:
   12145             :  *         if item is Ellipsis:
   12146             :  *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
   12147             :  *                 idx += ndim - len(tup)
   12148             :  *                 seen_ellipsis = True
   12149             :  */
   12150             :       }
   12151             : 
   12152             :       /* "View.MemoryView":688
   12153             :  *                 idx += ndim - len(tup)
   12154             :  *                 seen_ellipsis = True
   12155             :  *             have_slices = True             # <<<<<<<<<<<<<<
   12156             :  *         else:
   12157             :  *             if isinstance(item, slice):
   12158             :  */
   12159           0 :       __pyx_v_have_slices = 1;
   12160             : 
   12161             :       /* "View.MemoryView":684
   12162             :  *     idx = 0
   12163             :  *     for item in tup:
   12164             :  *         if item is Ellipsis:             # <<<<<<<<<<<<<<
   12165             :  *             if not seen_ellipsis:
   12166             :  *                 idx += ndim - len(tup)
   12167             :  */
   12168           0 :       goto __pyx_L5;
   12169             :     }
   12170             : 
   12171             :     /* "View.MemoryView":690
   12172             :  *             have_slices = True
   12173             :  *         else:
   12174             :  *             if isinstance(item, slice):             # <<<<<<<<<<<<<<
   12175             :  *                 have_slices = True
   12176             :  *             elif not PyIndex_Check(item):
   12177             :  */
   12178             :     /*else*/ {
   12179           0 :       __pyx_t_2 = PySlice_Check(__pyx_v_item); 
   12180           0 :       if (__pyx_t_2) {
   12181             : 
   12182             :         /* "View.MemoryView":691
   12183             :  *         else:
   12184             :  *             if isinstance(item, slice):
   12185             :  *                 have_slices = True             # <<<<<<<<<<<<<<
   12186             :  *             elif not PyIndex_Check(item):
   12187             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"
   12188             :  */
   12189           0 :         __pyx_v_have_slices = 1;
   12190             : 
   12191             :         /* "View.MemoryView":690
   12192             :  *             have_slices = True
   12193             :  *         else:
   12194             :  *             if isinstance(item, slice):             # <<<<<<<<<<<<<<
   12195             :  *                 have_slices = True
   12196             :  *             elif not PyIndex_Check(item):
   12197             :  */
   12198           0 :         goto __pyx_L7;
   12199             :       }
   12200             : 
   12201             :       /* "View.MemoryView":692
   12202             :  *             if isinstance(item, slice):
   12203             :  *                 have_slices = True
   12204             :  *             elif not PyIndex_Check(item):             # <<<<<<<<<<<<<<
   12205             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"
   12206             :  *             result[idx] = item
   12207             :  */
   12208           0 :       __pyx_t_2 = (!(PyIndex_Check(__pyx_v_item) != 0));
   12209           0 :       if (unlikely(__pyx_t_2)) {
   12210             : 
   12211             :         /* "View.MemoryView":693
   12212             :  *                 have_slices = True
   12213             :  *             elif not PyIndex_Check(item):
   12214             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"             # <<<<<<<<<<<<<<
   12215             :  *             result[idx] = item
   12216             :  *         idx += 1
   12217             :  */
   12218           0 :         __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 693, __pyx_L1_error)
   12219           0 :         __Pyx_GOTREF(__pyx_t_3);
   12220           0 :         __pyx_t_5 = 0;
   12221           0 :         __pyx_t_6 = 127;
   12222           0 :         __Pyx_INCREF(__pyx_kp_u_Cannot_index_with_type);
   12223           0 :         __pyx_t_5 += 24;
   12224           0 :         __Pyx_GIVEREF(__pyx_kp_u_Cannot_index_with_type);
   12225           0 :         PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Cannot_index_with_type);
   12226           0 :         __pyx_t_7 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error)
   12227           0 :         __Pyx_GOTREF(__pyx_t_7);
   12228           0 :         __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
   12229           0 :         __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
   12230           0 :         __Pyx_GIVEREF(__pyx_t_7);
   12231           0 :         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
   12232           0 :         __pyx_t_7 = 0;
   12233           0 :         __Pyx_INCREF(__pyx_kp_u__6);
   12234           0 :         __pyx_t_5 += 1;
   12235           0 :         __Pyx_GIVEREF(__pyx_kp_u__6);
   12236           0 :         PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__6);
   12237           0 :         __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error)
   12238           0 :         __Pyx_GOTREF(__pyx_t_7);
   12239           0 :         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   12240           0 :         __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_7, 0, 0);
   12241           0 :         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   12242           0 :         __PYX_ERR(1, 693, __pyx_L1_error)
   12243             : 
   12244             :         /* "View.MemoryView":692
   12245             :  *             if isinstance(item, slice):
   12246             :  *                 have_slices = True
   12247             :  *             elif not PyIndex_Check(item):             # <<<<<<<<<<<<<<
   12248             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"
   12249             :  *             result[idx] = item
   12250             :  */
   12251             :       }
   12252           0 :       __pyx_L7:;
   12253             : 
   12254             :       /* "View.MemoryView":694
   12255             :  *             elif not PyIndex_Check(item):
   12256             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"
   12257             :  *             result[idx] = item             # <<<<<<<<<<<<<<
   12258             :  *         idx += 1
   12259             :  * 
   12260             :  */
   12261           0 :       if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1) < 0))) __PYX_ERR(1, 694, __pyx_L1_error)
   12262             :     }
   12263           0 :     __pyx_L5:;
   12264             : 
   12265             :     /* "View.MemoryView":695
   12266             :  *                 raise TypeError, f"Cannot index with type '{type(item)}'"
   12267             :  *             result[idx] = item
   12268             :  *         idx += 1             # <<<<<<<<<<<<<<
   12269             :  * 
   12270             :  *     nslices = ndim - idx
   12271             :  */
   12272           0 :     __pyx_v_idx = (__pyx_v_idx + 1);
   12273             : 
   12274             :     /* "View.MemoryView":683
   12275             :  *     seen_ellipsis = False
   12276             :  *     idx = 0
   12277             :  *     for item in tup:             # <<<<<<<<<<<<<<
   12278             :  *         if item is Ellipsis:
   12279             :  *             if not seen_ellipsis:
   12280             :  */
   12281             :   }
   12282           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   12283             : 
   12284             :   /* "View.MemoryView":697
   12285             :  *         idx += 1
   12286             :  * 
   12287             :  *     nslices = ndim - idx             # <<<<<<<<<<<<<<
   12288             :  *     return have_slices or nslices, tuple(result)
   12289             :  * 
   12290             :  */
   12291           0 :   __pyx_v_nslices = (__pyx_v_ndim - __pyx_v_idx);
   12292             : 
   12293             :   /* "View.MemoryView":698
   12294             :  * 
   12295             :  *     nslices = ndim - idx
   12296             :  *     return have_slices or nslices, tuple(result)             # <<<<<<<<<<<<<<
   12297             :  * 
   12298             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:
   12299             :  */
   12300           0 :   __Pyx_XDECREF(__pyx_r);
   12301           0 :   if (!__pyx_v_have_slices) {
   12302           0 :   } else {
   12303           0 :     __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error)
   12304           0 :     __Pyx_GOTREF(__pyx_t_7);
   12305           0 :     __pyx_t_1 = __pyx_t_7;
   12306           0 :     __pyx_t_7 = 0;
   12307           0 :     goto __pyx_L9_bool_binop_done;
   12308             :   }
   12309           0 :   __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error)
   12310             :   __Pyx_GOTREF(__pyx_t_7);
   12311             :   __pyx_t_1 = __pyx_t_7;
   12312           0 :   __pyx_t_7 = 0;
   12313           0 :   __pyx_L9_bool_binop_done:;
   12314           0 :   __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error)
   12315           0 :   __Pyx_GOTREF(__pyx_t_7);
   12316           0 :   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L1_error)
   12317           0 :   __Pyx_GOTREF(__pyx_t_3);
   12318           0 :   __Pyx_GIVEREF(__pyx_t_1);
   12319           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 698, __pyx_L1_error);
   12320           0 :   __Pyx_GIVEREF(__pyx_t_7);
   12321           0 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error);
   12322           0 :   __pyx_t_1 = 0;
   12323           0 :   __pyx_t_7 = 0;
   12324           0 :   __pyx_r = ((PyObject*)__pyx_t_3);
   12325           0 :   __pyx_t_3 = 0;
   12326           0 :   goto __pyx_L0;
   12327             : 
   12328             :   /* "View.MemoryView":671
   12329             :  *     return isinstance(o, memoryview)
   12330             :  * 
   12331             :  * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
   12332             :  *     """
   12333             :  *     Replace all ellipses with full slices and fill incomplete indices with
   12334             :  */
   12335             : 
   12336             :   /* function exit code */
   12337           0 :   __pyx_L1_error:;
   12338           0 :   __Pyx_XDECREF(__pyx_t_1);
   12339           0 :   __Pyx_XDECREF(__pyx_t_3);
   12340           0 :   __Pyx_XDECREF(__pyx_t_7);
   12341           0 :   __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename);
   12342           0 :   __pyx_r = 0;
   12343           0 :   __pyx_L0:;
   12344           0 :   __Pyx_XDECREF(__pyx_v_tup);
   12345           0 :   __Pyx_XDECREF(__pyx_v_result);
   12346           0 :   __Pyx_XDECREF(__pyx_v_item);
   12347           0 :   __Pyx_XGIVEREF(__pyx_r);
   12348           0 :   __Pyx_RefNannyFinishContext();
   12349           0 :   return __pyx_r;
   12350             : }
   12351             : 
   12352             : /* "View.MemoryView":700
   12353             :  *     return have_slices or nslices, tuple(result)
   12354             :  * 
   12355             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:             # <<<<<<<<<<<<<<
   12356             :  *     for suboffset in suboffsets[:ndim]:
   12357             :  *         if suboffset >= 0:
   12358             :  */
   12359             : 
   12360           0 : static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) {
   12361           0 :   Py_ssize_t __pyx_v_suboffset;
   12362           0 :   int __pyx_r;
   12363           0 :   Py_ssize_t *__pyx_t_1;
   12364           0 :   Py_ssize_t *__pyx_t_2;
   12365           0 :   Py_ssize_t *__pyx_t_3;
   12366           0 :   int __pyx_t_4;
   12367           0 :   int __pyx_lineno = 0;
   12368           0 :   const char *__pyx_filename = NULL;
   12369           0 :   int __pyx_clineno = 0;
   12370             : 
   12371             :   /* "View.MemoryView":701
   12372             :  * 
   12373             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:
   12374             :  *     for suboffset in suboffsets[:ndim]:             # <<<<<<<<<<<<<<
   12375             :  *         if suboffset >= 0:
   12376             :  *             raise ValueError, "Indirect dimensions not supported"
   12377             :  */
   12378           0 :   __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim);
   12379           0 :   for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) {
   12380           0 :     __pyx_t_1 = __pyx_t_3;
   12381           0 :     __pyx_v_suboffset = (__pyx_t_1[0]);
   12382             : 
   12383             :     /* "View.MemoryView":702
   12384             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:
   12385             :  *     for suboffset in suboffsets[:ndim]:
   12386             :  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
   12387             :  *             raise ValueError, "Indirect dimensions not supported"
   12388             :  *     return 0  # return type just used as an error flag
   12389             :  */
   12390           0 :     __pyx_t_4 = (__pyx_v_suboffset >= 0);
   12391           0 :     if (unlikely(__pyx_t_4)) {
   12392             : 
   12393             :       /* "View.MemoryView":703
   12394             :  *     for suboffset in suboffsets[:ndim]:
   12395             :  *         if suboffset >= 0:
   12396             :  *             raise ValueError, "Indirect dimensions not supported"             # <<<<<<<<<<<<<<
   12397             :  *     return 0  # return type just used as an error flag
   12398             :  * 
   12399             :  */
   12400           0 :       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Indirect_dimensions_not_supporte, 0, 0);
   12401           0 :       __PYX_ERR(1, 703, __pyx_L1_error)
   12402             : 
   12403             :       /* "View.MemoryView":702
   12404             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:
   12405             :  *     for suboffset in suboffsets[:ndim]:
   12406             :  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
   12407             :  *             raise ValueError, "Indirect dimensions not supported"
   12408             :  *     return 0  # return type just used as an error flag
   12409             :  */
   12410             :     }
   12411             :   }
   12412             : 
   12413             :   /* "View.MemoryView":704
   12414             :  *         if suboffset >= 0:
   12415             :  *             raise ValueError, "Indirect dimensions not supported"
   12416             :  *     return 0  # return type just used as an error flag             # <<<<<<<<<<<<<<
   12417             :  * 
   12418             :  * 
   12419             :  */
   12420           0 :   __pyx_r = 0;
   12421           0 :   goto __pyx_L0;
   12422             : 
   12423             :   /* "View.MemoryView":700
   12424             :  *     return have_slices or nslices, tuple(result)
   12425             :  * 
   12426             :  * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1:             # <<<<<<<<<<<<<<
   12427             :  *     for suboffset in suboffsets[:ndim]:
   12428             :  *         if suboffset >= 0:
   12429             :  */
   12430             : 
   12431             :   /* function exit code */
   12432           0 :   __pyx_L1_error:;
   12433           0 :   __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
   12434           0 :   __pyx_r = -1;
   12435           0 :   __pyx_L0:;
   12436           0 :   return __pyx_r;
   12437             : }
   12438             : 
   12439             : /* "View.MemoryView":711
   12440             :  * 
   12441             :  * @cname('__pyx_memview_slice')
   12442             :  * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
   12443             :  *     cdef int new_ndim = 0, suboffset_dim = -1, dim
   12444             :  *     cdef bint negative_step
   12445             :  */
   12446             : 
   12447           0 : static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) {
   12448           0 :   int __pyx_v_new_ndim;
   12449           0 :   int __pyx_v_suboffset_dim;
   12450           0 :   int __pyx_v_dim;
   12451           0 :   __Pyx_memviewslice __pyx_v_src;
   12452           0 :   __Pyx_memviewslice __pyx_v_dst;
   12453           0 :   __Pyx_memviewslice *__pyx_v_p_src;
   12454           0 :   struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0;
   12455           0 :   __Pyx_memviewslice *__pyx_v_p_dst;
   12456           0 :   int *__pyx_v_p_suboffset_dim;
   12457           0 :   Py_ssize_t __pyx_v_start;
   12458           0 :   Py_ssize_t __pyx_v_stop;
   12459           0 :   Py_ssize_t __pyx_v_step;
   12460           0 :   Py_ssize_t __pyx_v_cindex;
   12461           0 :   int __pyx_v_have_start;
   12462           0 :   int __pyx_v_have_stop;
   12463           0 :   int __pyx_v_have_step;
   12464           0 :   PyObject *__pyx_v_index = NULL;
   12465           0 :   struct __pyx_memoryview_obj *__pyx_r = NULL;
   12466             :   __Pyx_RefNannyDeclarations
   12467           0 :   int __pyx_t_1;
   12468           0 :   PyObject *__pyx_t_2 = NULL;
   12469           0 :   struct __pyx_memoryview_obj *__pyx_t_3;
   12470           0 :   char *__pyx_t_4;
   12471           0 :   int __pyx_t_5;
   12472           0 :   Py_ssize_t __pyx_t_6;
   12473           0 :   PyObject *(*__pyx_t_7)(PyObject *);
   12474           0 :   PyObject *__pyx_t_8 = NULL;
   12475           0 :   Py_ssize_t __pyx_t_9;
   12476           0 :   int __pyx_t_10;
   12477           0 :   Py_ssize_t __pyx_t_11;
   12478           0 :   int __pyx_lineno = 0;
   12479           0 :   const char *__pyx_filename = NULL;
   12480           0 :   int __pyx_clineno = 0;
   12481           0 :   __Pyx_RefNannySetupContext("memview_slice", 1);
   12482             : 
   12483             :   /* "View.MemoryView":712
   12484             :  * @cname('__pyx_memview_slice')
   12485             :  * cdef memoryview memview_slice(memoryview memview, object indices):
   12486             :  *     cdef int new_ndim = 0, suboffset_dim = -1, dim             # <<<<<<<<<<<<<<
   12487             :  *     cdef bint negative_step
   12488             :  *     cdef __Pyx_memviewslice src, dst
   12489             :  */
   12490           0 :   __pyx_v_new_ndim = 0;
   12491           0 :   __pyx_v_suboffset_dim = -1;
   12492             : 
   12493             :   /* "View.MemoryView":719
   12494             :  * 
   12495             :  * 
   12496             :  *     memset(&dst, 0, sizeof(dst))             # <<<<<<<<<<<<<<
   12497             :  * 
   12498             :  *     cdef _memoryviewslice memviewsliceobj
   12499             :  */
   12500           0 :   (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst))));
   12501             : 
   12502             :   /* "View.MemoryView":723
   12503             :  *     cdef _memoryviewslice memviewsliceobj
   12504             :  * 
   12505             :  *     assert memview.view.ndim > 0             # <<<<<<<<<<<<<<
   12506             :  * 
   12507             :  *     if isinstance(memview, _memoryviewslice):
   12508             :  */
   12509             :   #ifndef CYTHON_WITHOUT_ASSERTIONS
   12510           0 :   if (unlikely(__pyx_assertions_enabled())) {
   12511           0 :     __pyx_t_1 = (__pyx_v_memview->view.ndim > 0);
   12512           0 :     if (unlikely(!__pyx_t_1)) {
   12513           0 :       __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
   12514           0 :       __PYX_ERR(1, 723, __pyx_L1_error)
   12515             :     }
   12516             :   }
   12517             :   #else
   12518             :   if ((1)); else __PYX_ERR(1, 723, __pyx_L1_error)
   12519             :   #endif
   12520             : 
   12521             :   /* "View.MemoryView":725
   12522             :  *     assert memview.view.ndim > 0
   12523             :  * 
   12524             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   12525             :  *         memviewsliceobj = memview
   12526             :  *         p_src = &memviewsliceobj.from_slice
   12527             :  */
   12528           0 :   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
   12529           0 :   if (__pyx_t_1) {
   12530             : 
   12531             :     /* "View.MemoryView":726
   12532             :  * 
   12533             :  *     if isinstance(memview, _memoryviewslice):
   12534             :  *         memviewsliceobj = memview             # <<<<<<<<<<<<<<
   12535             :  *         p_src = &memviewsliceobj.from_slice
   12536             :  *     else:
   12537             :  */
   12538           0 :     if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 726, __pyx_L1_error)
   12539           0 :     __pyx_t_2 = ((PyObject *)__pyx_v_memview);
   12540           0 :     __Pyx_INCREF(__pyx_t_2);
   12541           0 :     __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2);
   12542           0 :     __pyx_t_2 = 0;
   12543             : 
   12544             :     /* "View.MemoryView":727
   12545             :  *     if isinstance(memview, _memoryviewslice):
   12546             :  *         memviewsliceobj = memview
   12547             :  *         p_src = &memviewsliceobj.from_slice             # <<<<<<<<<<<<<<
   12548             :  *     else:
   12549             :  *         slice_copy(memview, &src)
   12550             :  */
   12551           0 :     __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice);
   12552             : 
   12553             :     /* "View.MemoryView":725
   12554             :  *     assert memview.view.ndim > 0
   12555             :  * 
   12556             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   12557             :  *         memviewsliceobj = memview
   12558             :  *         p_src = &memviewsliceobj.from_slice
   12559             :  */
   12560           0 :     goto __pyx_L3;
   12561             :   }
   12562             : 
   12563             :   /* "View.MemoryView":729
   12564             :  *         p_src = &memviewsliceobj.from_slice
   12565             :  *     else:
   12566             :  *         slice_copy(memview, &src)             # <<<<<<<<<<<<<<
   12567             :  *         p_src = &src
   12568             :  * 
   12569             :  */
   12570             :   /*else*/ {
   12571           0 :     __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src));
   12572             : 
   12573             :     /* "View.MemoryView":730
   12574             :  *     else:
   12575             :  *         slice_copy(memview, &src)
   12576             :  *         p_src = &src             # <<<<<<<<<<<<<<
   12577             :  * 
   12578             :  * 
   12579             :  */
   12580           0 :     __pyx_v_p_src = (&__pyx_v_src);
   12581             :   }
   12582           0 :   __pyx_L3:;
   12583             : 
   12584             :   /* "View.MemoryView":736
   12585             :  * 
   12586             :  * 
   12587             :  *     dst.memview = p_src.memview             # <<<<<<<<<<<<<<
   12588             :  *     dst.data = p_src.data
   12589             :  * 
   12590             :  */
   12591           0 :   __pyx_t_3 = __pyx_v_p_src->memview;
   12592           0 :   __pyx_v_dst.memview = __pyx_t_3;
   12593             : 
   12594             :   /* "View.MemoryView":737
   12595             :  * 
   12596             :  *     dst.memview = p_src.memview
   12597             :  *     dst.data = p_src.data             # <<<<<<<<<<<<<<
   12598             :  * 
   12599             :  * 
   12600             :  */
   12601           0 :   __pyx_t_4 = __pyx_v_p_src->data;
   12602           0 :   __pyx_v_dst.data = __pyx_t_4;
   12603             : 
   12604             :   /* "View.MemoryView":742
   12605             :  * 
   12606             :  * 
   12607             :  *     cdef __Pyx_memviewslice *p_dst = &dst             # <<<<<<<<<<<<<<
   12608             :  *     cdef int *p_suboffset_dim = &suboffset_dim
   12609             :  *     cdef Py_ssize_t start, stop, step, cindex
   12610             :  */
   12611           0 :   __pyx_v_p_dst = (&__pyx_v_dst);
   12612             : 
   12613             :   /* "View.MemoryView":743
   12614             :  * 
   12615             :  *     cdef __Pyx_memviewslice *p_dst = &dst
   12616             :  *     cdef int *p_suboffset_dim = &suboffset_dim             # <<<<<<<<<<<<<<
   12617             :  *     cdef Py_ssize_t start, stop, step, cindex
   12618             :  *     cdef bint have_start, have_stop, have_step
   12619             :  */
   12620           0 :   __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim);
   12621             : 
   12622             :   /* "View.MemoryView":747
   12623             :  *     cdef bint have_start, have_stop, have_step
   12624             :  * 
   12625             :  *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
   12626             :  *         if PyIndex_Check(index):
   12627             :  *             cindex = index
   12628             :  */
   12629           0 :   __pyx_t_5 = 0;
   12630           0 :   if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) {
   12631           0 :     __pyx_t_2 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_2);
   12632           0 :     __pyx_t_6 = 0;
   12633           0 :     __pyx_t_7 = NULL;
   12634             :   } else {
   12635           0 :     __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 747, __pyx_L1_error)
   12636           0 :     __Pyx_GOTREF(__pyx_t_2);
   12637           0 :     __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 747, __pyx_L1_error)
   12638             :   }
   12639           0 :   for (;;) {
   12640           0 :     if (likely(!__pyx_t_7)) {
   12641           0 :       if (likely(PyList_CheckExact(__pyx_t_2))) {
   12642             :         {
   12643           0 :           Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
   12644             :           #if !CYTHON_ASSUME_SAFE_MACROS
   12645             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error)
   12646             :           #endif
   12647           0 :           if (__pyx_t_6 >= __pyx_temp) break;
   12648             :         }
   12649             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   12650           0 :         __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(1, 747, __pyx_L1_error)
   12651             :         #else
   12652             :         __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error)
   12653             :         __Pyx_GOTREF(__pyx_t_8);
   12654             :         #endif
   12655             :       } else {
   12656             :         {
   12657           0 :           Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
   12658             :           #if !CYTHON_ASSUME_SAFE_MACROS
   12659             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error)
   12660             :           #endif
   12661           0 :           if (__pyx_t_6 >= __pyx_temp) break;
   12662             :         }
   12663             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   12664           0 :         __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(1, 747, __pyx_L1_error)
   12665             :         #else
   12666             :         __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error)
   12667             :         __Pyx_GOTREF(__pyx_t_8);
   12668             :         #endif
   12669             :       }
   12670             :     } else {
   12671           0 :       __pyx_t_8 = __pyx_t_7(__pyx_t_2);
   12672           0 :       if (unlikely(!__pyx_t_8)) {
   12673           0 :         PyObject* exc_type = PyErr_Occurred();
   12674           0 :         if (exc_type) {
   12675           0 :           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
   12676           0 :           else __PYX_ERR(1, 747, __pyx_L1_error)
   12677             :         }
   12678             :         break;
   12679             :       }
   12680           0 :       __Pyx_GOTREF(__pyx_t_8);
   12681             :     }
   12682           0 :     __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_8);
   12683           0 :     __pyx_t_8 = 0;
   12684           0 :     __pyx_v_dim = __pyx_t_5;
   12685           0 :     __pyx_t_5 = (__pyx_t_5 + 1);
   12686             : 
   12687             :     /* "View.MemoryView":748
   12688             :  * 
   12689             :  *     for dim, index in enumerate(indices):
   12690             :  *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
   12691             :  *             cindex = index
   12692             :  *             slice_memviewslice(
   12693             :  */
   12694           0 :     __pyx_t_1 = (PyIndex_Check(__pyx_v_index) != 0);
   12695           0 :     if (__pyx_t_1) {
   12696             : 
   12697             :       /* "View.MemoryView":749
   12698             :  *     for dim, index in enumerate(indices):
   12699             :  *         if PyIndex_Check(index):
   12700             :  *             cindex = index             # <<<<<<<<<<<<<<
   12701             :  *             slice_memviewslice(
   12702             :  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
   12703             :  */
   12704           0 :       __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 749, __pyx_L1_error)
   12705           0 :       __pyx_v_cindex = __pyx_t_9;
   12706             : 
   12707             :       /* "View.MemoryView":750
   12708             :  *         if PyIndex_Check(index):
   12709             :  *             cindex = index
   12710             :  *             slice_memviewslice(             # <<<<<<<<<<<<<<
   12711             :  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
   12712             :  *                 dim, new_ndim, p_suboffset_dim,
   12713             :  */
   12714           0 :       __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 750, __pyx_L1_error)
   12715             : 
   12716             :       /* "View.MemoryView":748
   12717             :  * 
   12718             :  *     for dim, index in enumerate(indices):
   12719             :  *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
   12720             :  *             cindex = index
   12721             :  *             slice_memviewslice(
   12722             :  */
   12723           0 :       goto __pyx_L6;
   12724             :     }
   12725             : 
   12726             :     /* "View.MemoryView":756
   12727             :  *                 0, 0, 0, # have_{start,stop,step}
   12728             :  *                 False)
   12729             :  *         elif index is None:             # <<<<<<<<<<<<<<
   12730             :  *             p_dst.shape[new_ndim] = 1
   12731             :  *             p_dst.strides[new_ndim] = 0
   12732             :  */
   12733           0 :     __pyx_t_1 = (__pyx_v_index == Py_None);
   12734           0 :     if (__pyx_t_1) {
   12735             : 
   12736             :       /* "View.MemoryView":757
   12737             :  *                 False)
   12738             :  *         elif index is None:
   12739             :  *             p_dst.shape[new_ndim] = 1             # <<<<<<<<<<<<<<
   12740             :  *             p_dst.strides[new_ndim] = 0
   12741             :  *             p_dst.suboffsets[new_ndim] = -1
   12742             :  */
   12743           0 :       (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1;
   12744             : 
   12745             :       /* "View.MemoryView":758
   12746             :  *         elif index is None:
   12747             :  *             p_dst.shape[new_ndim] = 1
   12748             :  *             p_dst.strides[new_ndim] = 0             # <<<<<<<<<<<<<<
   12749             :  *             p_dst.suboffsets[new_ndim] = -1
   12750             :  *             new_ndim += 1
   12751             :  */
   12752           0 :       (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0;
   12753             : 
   12754             :       /* "View.MemoryView":759
   12755             :  *             p_dst.shape[new_ndim] = 1
   12756             :  *             p_dst.strides[new_ndim] = 0
   12757             :  *             p_dst.suboffsets[new_ndim] = -1             # <<<<<<<<<<<<<<
   12758             :  *             new_ndim += 1
   12759             :  *         else:
   12760             :  */
   12761           0 :       (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L;
   12762             : 
   12763             :       /* "View.MemoryView":760
   12764             :  *             p_dst.strides[new_ndim] = 0
   12765             :  *             p_dst.suboffsets[new_ndim] = -1
   12766             :  *             new_ndim += 1             # <<<<<<<<<<<<<<
   12767             :  *         else:
   12768             :  *             start = index.start or 0
   12769             :  */
   12770           0 :       __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);
   12771             : 
   12772             :       /* "View.MemoryView":756
   12773             :  *                 0, 0, 0, # have_{start,stop,step}
   12774             :  *                 False)
   12775             :  *         elif index is None:             # <<<<<<<<<<<<<<
   12776             :  *             p_dst.shape[new_ndim] = 1
   12777             :  *             p_dst.strides[new_ndim] = 0
   12778             :  */
   12779           0 :       goto __pyx_L6;
   12780             :     }
   12781             : 
   12782             :     /* "View.MemoryView":762
   12783             :  *             new_ndim += 1
   12784             :  *         else:
   12785             :  *             start = index.start or 0             # <<<<<<<<<<<<<<
   12786             :  *             stop = index.stop or 0
   12787             :  *             step = index.step or 0
   12788             :  */
   12789             :     /*else*/ {
   12790           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 762, __pyx_L1_error)
   12791           0 :       __Pyx_GOTREF(__pyx_t_8);
   12792           0 :       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 762, __pyx_L1_error)
   12793           0 :       if (!__pyx_t_1) {
   12794           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12795             :       } else {
   12796           0 :         __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error)
   12797           0 :         __pyx_t_9 = __pyx_t_11;
   12798           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12799           0 :         goto __pyx_L7_bool_binop_done;
   12800             :       }
   12801             :       __pyx_t_9 = 0;
   12802           0 :       __pyx_L7_bool_binop_done:;
   12803           0 :       __pyx_v_start = __pyx_t_9;
   12804             : 
   12805             :       /* "View.MemoryView":763
   12806             :  *         else:
   12807             :  *             start = index.start or 0
   12808             :  *             stop = index.stop or 0             # <<<<<<<<<<<<<<
   12809             :  *             step = index.step or 0
   12810             :  * 
   12811             :  */
   12812           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error)
   12813           0 :       __Pyx_GOTREF(__pyx_t_8);
   12814           0 :       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error)
   12815           0 :       if (!__pyx_t_1) {
   12816           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12817             :       } else {
   12818           0 :         __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error)
   12819           0 :         __pyx_t_9 = __pyx_t_11;
   12820           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12821           0 :         goto __pyx_L9_bool_binop_done;
   12822             :       }
   12823             :       __pyx_t_9 = 0;
   12824           0 :       __pyx_L9_bool_binop_done:;
   12825           0 :       __pyx_v_stop = __pyx_t_9;
   12826             : 
   12827             :       /* "View.MemoryView":764
   12828             :  *             start = index.start or 0
   12829             :  *             stop = index.stop or 0
   12830             :  *             step = index.step or 0             # <<<<<<<<<<<<<<
   12831             :  * 
   12832             :  *             have_start = index.start is not None
   12833             :  */
   12834           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error)
   12835           0 :       __Pyx_GOTREF(__pyx_t_8);
   12836           0 :       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error)
   12837           0 :       if (!__pyx_t_1) {
   12838           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12839             :       } else {
   12840           0 :         __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error)
   12841           0 :         __pyx_t_9 = __pyx_t_11;
   12842           0 :         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12843           0 :         goto __pyx_L11_bool_binop_done;
   12844             :       }
   12845             :       __pyx_t_9 = 0;
   12846           0 :       __pyx_L11_bool_binop_done:;
   12847           0 :       __pyx_v_step = __pyx_t_9;
   12848             : 
   12849             :       /* "View.MemoryView":766
   12850             :  *             step = index.step or 0
   12851             :  * 
   12852             :  *             have_start = index.start is not None             # <<<<<<<<<<<<<<
   12853             :  *             have_stop = index.stop is not None
   12854             :  *             have_step = index.step is not None
   12855             :  */
   12856           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 766, __pyx_L1_error)
   12857           0 :       __Pyx_GOTREF(__pyx_t_8);
   12858           0 :       __pyx_t_1 = (__pyx_t_8 != Py_None);
   12859           0 :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12860           0 :       __pyx_v_have_start = __pyx_t_1;
   12861             : 
   12862             :       /* "View.MemoryView":767
   12863             :  * 
   12864             :  *             have_start = index.start is not None
   12865             :  *             have_stop = index.stop is not None             # <<<<<<<<<<<<<<
   12866             :  *             have_step = index.step is not None
   12867             :  * 
   12868             :  */
   12869           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error)
   12870           0 :       __Pyx_GOTREF(__pyx_t_8);
   12871           0 :       __pyx_t_1 = (__pyx_t_8 != Py_None);
   12872           0 :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12873           0 :       __pyx_v_have_stop = __pyx_t_1;
   12874             : 
   12875             :       /* "View.MemoryView":768
   12876             :  *             have_start = index.start is not None
   12877             :  *             have_stop = index.stop is not None
   12878             :  *             have_step = index.step is not None             # <<<<<<<<<<<<<<
   12879             :  * 
   12880             :  *             slice_memviewslice(
   12881             :  */
   12882           0 :       __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error)
   12883           0 :       __Pyx_GOTREF(__pyx_t_8);
   12884           0 :       __pyx_t_1 = (__pyx_t_8 != Py_None);
   12885           0 :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   12886           0 :       __pyx_v_have_step = __pyx_t_1;
   12887             : 
   12888             :       /* "View.MemoryView":770
   12889             :  *             have_step = index.step is not None
   12890             :  * 
   12891             :  *             slice_memviewslice(             # <<<<<<<<<<<<<<
   12892             :  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
   12893             :  *                 dim, new_ndim, p_suboffset_dim,
   12894             :  */
   12895           0 :       __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 770, __pyx_L1_error)
   12896             : 
   12897             :       /* "View.MemoryView":776
   12898             :  *                 have_start, have_stop, have_step,
   12899             :  *                 True)
   12900             :  *             new_ndim += 1             # <<<<<<<<<<<<<<
   12901             :  * 
   12902             :  *     if isinstance(memview, _memoryviewslice):
   12903             :  */
   12904           0 :       __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);
   12905             :     }
   12906           0 :     __pyx_L6:;
   12907             : 
   12908             :     /* "View.MemoryView":747
   12909             :  *     cdef bint have_start, have_stop, have_step
   12910             :  * 
   12911             :  *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
   12912             :  *         if PyIndex_Check(index):
   12913             :  *             cindex = index
   12914             :  */
   12915             :   }
   12916           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   12917             : 
   12918             :   /* "View.MemoryView":778
   12919             :  *             new_ndim += 1
   12920             :  * 
   12921             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   12922             :  *         return memoryview_fromslice(dst, new_ndim,
   12923             :  *                                     memviewsliceobj.to_object_func,
   12924             :  */
   12925           0 :   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
   12926           0 :   if (__pyx_t_1) {
   12927             : 
   12928             :     /* "View.MemoryView":779
   12929             :  * 
   12930             :  *     if isinstance(memview, _memoryviewslice):
   12931             :  *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
   12932             :  *                                     memviewsliceobj.to_object_func,
   12933             :  *                                     memviewsliceobj.to_dtype_func,
   12934             :  */
   12935           0 :     __Pyx_XDECREF((PyObject *)__pyx_r);
   12936             : 
   12937             :     /* "View.MemoryView":780
   12938             :  *     if isinstance(memview, _memoryviewslice):
   12939             :  *         return memoryview_fromslice(dst, new_ndim,
   12940             :  *                                     memviewsliceobj.to_object_func,             # <<<<<<<<<<<<<<
   12941             :  *                                     memviewsliceobj.to_dtype_func,
   12942             :  *                                     memview.dtype_is_object)
   12943             :  */
   12944           0 :     if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 780, __pyx_L1_error) }
   12945             : 
   12946             :     /* "View.MemoryView":781
   12947             :  *         return memoryview_fromslice(dst, new_ndim,
   12948             :  *                                     memviewsliceobj.to_object_func,
   12949             :  *                                     memviewsliceobj.to_dtype_func,             # <<<<<<<<<<<<<<
   12950             :  *                                     memview.dtype_is_object)
   12951             :  *     else:
   12952             :  */
   12953           0 :     if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) }
   12954             : 
   12955             :     /* "View.MemoryView":779
   12956             :  * 
   12957             :  *     if isinstance(memview, _memoryviewslice):
   12958             :  *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
   12959             :  *                                     memviewsliceobj.to_object_func,
   12960             :  *                                     memviewsliceobj.to_dtype_func,
   12961             :  */
   12962           0 :     __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 779, __pyx_L1_error)
   12963           0 :     __Pyx_GOTREF(__pyx_t_2);
   12964           0 :     if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_memoryview_type))))) __PYX_ERR(1, 779, __pyx_L1_error)
   12965           0 :     __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2);
   12966           0 :     __pyx_t_2 = 0;
   12967           0 :     goto __pyx_L0;
   12968             : 
   12969             :     /* "View.MemoryView":778
   12970             :  *             new_ndim += 1
   12971             :  * 
   12972             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   12973             :  *         return memoryview_fromslice(dst, new_ndim,
   12974             :  *                                     memviewsliceobj.to_object_func,
   12975             :  */
   12976             :   }
   12977             : 
   12978             :   /* "View.MemoryView":784
   12979             :  *                                     memview.dtype_is_object)
   12980             :  *     else:
   12981             :  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
   12982             :  *                                     memview.dtype_is_object)
   12983             :  * 
   12984             :  */
   12985             :   /*else*/ {
   12986           0 :     __Pyx_XDECREF((PyObject *)__pyx_r);
   12987             : 
   12988             :     /* "View.MemoryView":785
   12989             :  *     else:
   12990             :  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,
   12991             :  *                                     memview.dtype_is_object)             # <<<<<<<<<<<<<<
   12992             :  * 
   12993             :  * 
   12994             :  */
   12995           0 :     __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 784, __pyx_L1_error)
   12996           0 :     __Pyx_GOTREF(__pyx_t_2);
   12997             : 
   12998             :     /* "View.MemoryView":784
   12999             :  *                                     memview.dtype_is_object)
   13000             :  *     else:
   13001             :  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
   13002             :  *                                     memview.dtype_is_object)
   13003             :  * 
   13004             :  */
   13005           0 :     if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_memoryview_type))))) __PYX_ERR(1, 784, __pyx_L1_error)
   13006           0 :     __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2);
   13007           0 :     __pyx_t_2 = 0;
   13008           0 :     goto __pyx_L0;
   13009             :   }
   13010             : 
   13011             :   /* "View.MemoryView":711
   13012             :  * 
   13013             :  * @cname('__pyx_memview_slice')
   13014             :  * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
   13015             :  *     cdef int new_ndim = 0, suboffset_dim = -1, dim
   13016             :  *     cdef bint negative_step
   13017             :  */
   13018             : 
   13019             :   /* function exit code */
   13020           0 :   __pyx_L1_error:;
   13021           0 :   __Pyx_XDECREF(__pyx_t_2);
   13022           0 :   __Pyx_XDECREF(__pyx_t_8);
   13023           0 :   __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   13024           0 :   __pyx_r = 0;
   13025           0 :   __pyx_L0:;
   13026           0 :   __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj);
   13027           0 :   __Pyx_XDECREF(__pyx_v_index);
   13028           0 :   __Pyx_XGIVEREF((PyObject *)__pyx_r);
   13029           0 :   __Pyx_RefNannyFinishContext();
   13030           0 :   return __pyx_r;
   13031             : }
   13032             : 
   13033             : /* "View.MemoryView":793
   13034             :  * 
   13035             :  * @cname('__pyx_memoryview_slice_memviewslice')
   13036             :  * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
   13037             :  *         __Pyx_memviewslice *dst,
   13038             :  *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
   13039             :  */
   13040             : 
   13041           0 : static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) {
   13042           0 :   Py_ssize_t __pyx_v_new_shape;
   13043           0 :   int __pyx_v_negative_step;
   13044           0 :   int __pyx_r;
   13045           0 :   int __pyx_t_1;
   13046           0 :   int __pyx_t_2;
   13047           0 :   int __pyx_t_3;
   13048           0 :   int __pyx_lineno = 0;
   13049           0 :   const char *__pyx_filename = NULL;
   13050           0 :   int __pyx_clineno = 0;
   13051             :   #ifdef WITH_THREAD
   13052           0 :   PyGILState_STATE __pyx_gilstate_save;
   13053             :   #endif
   13054             : 
   13055             :   /* "View.MemoryView":813
   13056             :  *     cdef bint negative_step
   13057             :  * 
   13058             :  *     if not is_slice:             # <<<<<<<<<<<<<<
   13059             :  * 
   13060             :  *         if start < 0:
   13061             :  */
   13062           0 :   __pyx_t_1 = (!__pyx_v_is_slice);
   13063           0 :   if (__pyx_t_1) {
   13064             : 
   13065             :     /* "View.MemoryView":815
   13066             :  *     if not is_slice:
   13067             :  * 
   13068             :  *         if start < 0:             # <<<<<<<<<<<<<<
   13069             :  *             start += shape
   13070             :  *         if not 0 <= start < shape:
   13071             :  */
   13072           0 :     __pyx_t_1 = (__pyx_v_start < 0);
   13073           0 :     if (__pyx_t_1) {
   13074             : 
   13075             :       /* "View.MemoryView":816
   13076             :  * 
   13077             :  *         if start < 0:
   13078             :  *             start += shape             # <<<<<<<<<<<<<<
   13079             :  *         if not 0 <= start < shape:
   13080             :  *             _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim)
   13081             :  */
   13082           0 :       __pyx_v_start = (__pyx_v_start + __pyx_v_shape);
   13083             : 
   13084             :       /* "View.MemoryView":815
   13085             :  *     if not is_slice:
   13086             :  * 
   13087             :  *         if start < 0:             # <<<<<<<<<<<<<<
   13088             :  *             start += shape
   13089             :  *         if not 0 <= start < shape:
   13090             :  */
   13091             :     }
   13092             : 
   13093             :     /* "View.MemoryView":817
   13094             :  *         if start < 0:
   13095             :  *             start += shape
   13096             :  *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
   13097             :  *             _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim)
   13098             :  *     else:
   13099             :  */
   13100           0 :     __pyx_t_1 = (0 <= __pyx_v_start);
   13101           0 :     if (__pyx_t_1) {
   13102           0 :       __pyx_t_1 = (__pyx_v_start < __pyx_v_shape);
   13103             :     }
   13104           0 :     __pyx_t_2 = (!__pyx_t_1);
   13105           0 :     if (__pyx_t_2) {
   13106             : 
   13107             :       /* "View.MemoryView":818
   13108             :  *             start += shape
   13109             :  *         if not 0 <= start < shape:
   13110             :  *             _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim)             # <<<<<<<<<<<<<<
   13111             :  *     else:
   13112             :  * 
   13113             :  */
   13114           0 :       __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_kp_s_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 818, __pyx_L1_error)
   13115             : 
   13116             :       /* "View.MemoryView":817
   13117             :  *         if start < 0:
   13118             :  *             start += shape
   13119             :  *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
   13120             :  *             _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim)
   13121             :  *     else:
   13122             :  */
   13123             :     }
   13124             : 
   13125             :     /* "View.MemoryView":813
   13126             :  *     cdef bint negative_step
   13127             :  * 
   13128             :  *     if not is_slice:             # <<<<<<<<<<<<<<
   13129             :  * 
   13130             :  *         if start < 0:
   13131             :  */
   13132           0 :     goto __pyx_L3;
   13133             :   }
   13134             : 
   13135             :   /* "View.MemoryView":821
   13136             :  *     else:
   13137             :  * 
   13138             :  *         if have_step:             # <<<<<<<<<<<<<<
   13139             :  *             negative_step = step < 0
   13140             :  *             if step == 0:
   13141             :  */
   13142             :   /*else*/ {
   13143           0 :     __pyx_t_2 = (__pyx_v_have_step != 0);
   13144           0 :     if (__pyx_t_2) {
   13145             : 
   13146             :       /* "View.MemoryView":822
   13147             :  * 
   13148             :  *         if have_step:
   13149             :  *             negative_step = step < 0             # <<<<<<<<<<<<<<
   13150             :  *             if step == 0:
   13151             :  *                 _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim)
   13152             :  */
   13153           0 :       __pyx_v_negative_step = (__pyx_v_step < 0);
   13154             : 
   13155             :       /* "View.MemoryView":823
   13156             :  *         if have_step:
   13157             :  *             negative_step = step < 0
   13158             :  *             if step == 0:             # <<<<<<<<<<<<<<
   13159             :  *                 _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim)
   13160             :  *         else:
   13161             :  */
   13162           0 :       __pyx_t_2 = (__pyx_v_step == 0);
   13163           0 :       if (__pyx_t_2) {
   13164             : 
   13165             :         /* "View.MemoryView":824
   13166             :  *             negative_step = step < 0
   13167             :  *             if step == 0:
   13168             :  *                 _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim)             # <<<<<<<<<<<<<<
   13169             :  *         else:
   13170             :  *             negative_step = False
   13171             :  */
   13172           0 :         __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_kp_s_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 824, __pyx_L1_error)
   13173             : 
   13174             :         /* "View.MemoryView":823
   13175             :  *         if have_step:
   13176             :  *             negative_step = step < 0
   13177             :  *             if step == 0:             # <<<<<<<<<<<<<<
   13178             :  *                 _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim)
   13179             :  *         else:
   13180             :  */
   13181             :       }
   13182             : 
   13183             :       /* "View.MemoryView":821
   13184             :  *     else:
   13185             :  * 
   13186             :  *         if have_step:             # <<<<<<<<<<<<<<
   13187             :  *             negative_step = step < 0
   13188             :  *             if step == 0:
   13189             :  */
   13190           0 :       goto __pyx_L6;
   13191             :     }
   13192             : 
   13193             :     /* "View.MemoryView":826
   13194             :  *                 _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim)
   13195             :  *         else:
   13196             :  *             negative_step = False             # <<<<<<<<<<<<<<
   13197             :  *             step = 1
   13198             :  * 
   13199             :  */
   13200             :     /*else*/ {
   13201             :       __pyx_v_negative_step = 0;
   13202             : 
   13203             :       /* "View.MemoryView":827
   13204             :  *         else:
   13205             :  *             negative_step = False
   13206             :  *             step = 1             # <<<<<<<<<<<<<<
   13207             :  * 
   13208             :  * 
   13209             :  */
   13210             :       __pyx_v_step = 1;
   13211             :     }
   13212           0 :     __pyx_L6:;
   13213             : 
   13214             :     /* "View.MemoryView":830
   13215             :  * 
   13216             :  * 
   13217             :  *         if have_start:             # <<<<<<<<<<<<<<
   13218             :  *             if start < 0:
   13219             :  *                 start += shape
   13220             :  */
   13221           0 :     __pyx_t_2 = (__pyx_v_have_start != 0);
   13222           0 :     if (__pyx_t_2) {
   13223             : 
   13224             :       /* "View.MemoryView":831
   13225             :  * 
   13226             :  *         if have_start:
   13227             :  *             if start < 0:             # <<<<<<<<<<<<<<
   13228             :  *                 start += shape
   13229             :  *                 if start < 0:
   13230             :  */
   13231           0 :       __pyx_t_2 = (__pyx_v_start < 0);
   13232           0 :       if (__pyx_t_2) {
   13233             : 
   13234             :         /* "View.MemoryView":832
   13235             :  *         if have_start:
   13236             :  *             if start < 0:
   13237             :  *                 start += shape             # <<<<<<<<<<<<<<
   13238             :  *                 if start < 0:
   13239             :  *                     start = 0
   13240             :  */
   13241           0 :         __pyx_v_start = (__pyx_v_start + __pyx_v_shape);
   13242             : 
   13243             :         /* "View.MemoryView":833
   13244             :  *             if start < 0:
   13245             :  *                 start += shape
   13246             :  *                 if start < 0:             # <<<<<<<<<<<<<<
   13247             :  *                     start = 0
   13248             :  *             elif start >= shape:
   13249             :  */
   13250           0 :         __pyx_t_2 = (__pyx_v_start < 0);
   13251           0 :         if (__pyx_t_2) {
   13252             : 
   13253             :           /* "View.MemoryView":834
   13254             :  *                 start += shape
   13255             :  *                 if start < 0:
   13256             :  *                     start = 0             # <<<<<<<<<<<<<<
   13257             :  *             elif start >= shape:
   13258             :  *                 if negative_step:
   13259             :  */
   13260             :           __pyx_v_start = 0;
   13261             : 
   13262             :           /* "View.MemoryView":833
   13263             :  *             if start < 0:
   13264             :  *                 start += shape
   13265             :  *                 if start < 0:             # <<<<<<<<<<<<<<
   13266             :  *                     start = 0
   13267             :  *             elif start >= shape:
   13268             :  */
   13269             :         }
   13270             : 
   13271             :         /* "View.MemoryView":831
   13272             :  * 
   13273             :  *         if have_start:
   13274             :  *             if start < 0:             # <<<<<<<<<<<<<<
   13275             :  *                 start += shape
   13276             :  *                 if start < 0:
   13277             :  */
   13278           0 :         goto __pyx_L9;
   13279             :       }
   13280             : 
   13281             :       /* "View.MemoryView":835
   13282             :  *                 if start < 0:
   13283             :  *                     start = 0
   13284             :  *             elif start >= shape:             # <<<<<<<<<<<<<<
   13285             :  *                 if negative_step:
   13286             :  *                     start = shape - 1
   13287             :  */
   13288           0 :       __pyx_t_2 = (__pyx_v_start >= __pyx_v_shape);
   13289           0 :       if (__pyx_t_2) {
   13290             : 
   13291             :         /* "View.MemoryView":836
   13292             :  *                     start = 0
   13293             :  *             elif start >= shape:
   13294             :  *                 if negative_step:             # <<<<<<<<<<<<<<
   13295             :  *                     start = shape - 1
   13296             :  *                 else:
   13297             :  */
   13298           0 :         if (__pyx_v_negative_step) {
   13299             : 
   13300             :           /* "View.MemoryView":837
   13301             :  *             elif start >= shape:
   13302             :  *                 if negative_step:
   13303             :  *                     start = shape - 1             # <<<<<<<<<<<<<<
   13304             :  *                 else:
   13305             :  *                     start = shape
   13306             :  */
   13307           0 :           __pyx_v_start = (__pyx_v_shape - 1);
   13308             : 
   13309             :           /* "View.MemoryView":836
   13310             :  *                     start = 0
   13311             :  *             elif start >= shape:
   13312             :  *                 if negative_step:             # <<<<<<<<<<<<<<
   13313             :  *                     start = shape - 1
   13314             :  *                 else:
   13315             :  */
   13316           0 :           goto __pyx_L11;
   13317             :         }
   13318             : 
   13319             :         /* "View.MemoryView":839
   13320             :  *                     start = shape - 1
   13321             :  *                 else:
   13322             :  *                     start = shape             # <<<<<<<<<<<<<<
   13323             :  *         else:
   13324             :  *             if negative_step:
   13325             :  */
   13326             :         /*else*/ {
   13327             :           __pyx_v_start = __pyx_v_shape;
   13328             :         }
   13329           0 :         __pyx_L11:;
   13330             : 
   13331             :         /* "View.MemoryView":835
   13332             :  *                 if start < 0:
   13333             :  *                     start = 0
   13334             :  *             elif start >= shape:             # <<<<<<<<<<<<<<
   13335             :  *                 if negative_step:
   13336             :  *                     start = shape - 1
   13337             :  */
   13338             :       }
   13339           0 :       __pyx_L9:;
   13340             : 
   13341             :       /* "View.MemoryView":830
   13342             :  * 
   13343             :  * 
   13344             :  *         if have_start:             # <<<<<<<<<<<<<<
   13345             :  *             if start < 0:
   13346             :  *                 start += shape
   13347             :  */
   13348           0 :       goto __pyx_L8;
   13349             :     }
   13350             : 
   13351             :     /* "View.MemoryView":841
   13352             :  *                     start = shape
   13353             :  *         else:
   13354             :  *             if negative_step:             # <<<<<<<<<<<<<<
   13355             :  *                 start = shape - 1
   13356             :  *             else:
   13357             :  */
   13358             :     /*else*/ {
   13359           0 :       if (__pyx_v_negative_step) {
   13360             : 
   13361             :         /* "View.MemoryView":842
   13362             :  *         else:
   13363             :  *             if negative_step:
   13364             :  *                 start = shape - 1             # <<<<<<<<<<<<<<
   13365             :  *             else:
   13366             :  *                 start = 0
   13367             :  */
   13368           0 :         __pyx_v_start = (__pyx_v_shape - 1);
   13369             : 
   13370             :         /* "View.MemoryView":841
   13371             :  *                     start = shape
   13372             :  *         else:
   13373             :  *             if negative_step:             # <<<<<<<<<<<<<<
   13374             :  *                 start = shape - 1
   13375             :  *             else:
   13376             :  */
   13377           0 :         goto __pyx_L12;
   13378             :       }
   13379             : 
   13380             :       /* "View.MemoryView":844
   13381             :  *                 start = shape - 1
   13382             :  *             else:
   13383             :  *                 start = 0             # <<<<<<<<<<<<<<
   13384             :  * 
   13385             :  *         if have_stop:
   13386             :  */
   13387             :       /*else*/ {
   13388             :         __pyx_v_start = 0;
   13389             :       }
   13390           0 :       __pyx_L12:;
   13391             :     }
   13392           0 :     __pyx_L8:;
   13393             : 
   13394             :     /* "View.MemoryView":846
   13395             :  *                 start = 0
   13396             :  * 
   13397             :  *         if have_stop:             # <<<<<<<<<<<<<<
   13398             :  *             if stop < 0:
   13399             :  *                 stop += shape
   13400             :  */
   13401           0 :     __pyx_t_2 = (__pyx_v_have_stop != 0);
   13402           0 :     if (__pyx_t_2) {
   13403             : 
   13404             :       /* "View.MemoryView":847
   13405             :  * 
   13406             :  *         if have_stop:
   13407             :  *             if stop < 0:             # <<<<<<<<<<<<<<
   13408             :  *                 stop += shape
   13409             :  *                 if stop < 0:
   13410             :  */
   13411           0 :       __pyx_t_2 = (__pyx_v_stop < 0);
   13412           0 :       if (__pyx_t_2) {
   13413             : 
   13414             :         /* "View.MemoryView":848
   13415             :  *         if have_stop:
   13416             :  *             if stop < 0:
   13417             :  *                 stop += shape             # <<<<<<<<<<<<<<
   13418             :  *                 if stop < 0:
   13419             :  *                     stop = 0
   13420             :  */
   13421           0 :         __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape);
   13422             : 
   13423             :         /* "View.MemoryView":849
   13424             :  *             if stop < 0:
   13425             :  *                 stop += shape
   13426             :  *                 if stop < 0:             # <<<<<<<<<<<<<<
   13427             :  *                     stop = 0
   13428             :  *             elif stop > shape:
   13429             :  */
   13430           0 :         __pyx_t_2 = (__pyx_v_stop < 0);
   13431           0 :         if (__pyx_t_2) {
   13432             : 
   13433             :           /* "View.MemoryView":850
   13434             :  *                 stop += shape
   13435             :  *                 if stop < 0:
   13436             :  *                     stop = 0             # <<<<<<<<<<<<<<
   13437             :  *             elif stop > shape:
   13438             :  *                 stop = shape
   13439             :  */
   13440             :           __pyx_v_stop = 0;
   13441             : 
   13442             :           /* "View.MemoryView":849
   13443             :  *             if stop < 0:
   13444             :  *                 stop += shape
   13445             :  *                 if stop < 0:             # <<<<<<<<<<<<<<
   13446             :  *                     stop = 0
   13447             :  *             elif stop > shape:
   13448             :  */
   13449             :         }
   13450             : 
   13451             :         /* "View.MemoryView":847
   13452             :  * 
   13453             :  *         if have_stop:
   13454             :  *             if stop < 0:             # <<<<<<<<<<<<<<
   13455             :  *                 stop += shape
   13456             :  *                 if stop < 0:
   13457             :  */
   13458           0 :         goto __pyx_L14;
   13459             :       }
   13460             : 
   13461             :       /* "View.MemoryView":851
   13462             :  *                 if stop < 0:
   13463             :  *                     stop = 0
   13464             :  *             elif stop > shape:             # <<<<<<<<<<<<<<
   13465             :  *                 stop = shape
   13466             :  *         else:
   13467             :  */
   13468           0 :       __pyx_t_2 = (__pyx_v_stop > __pyx_v_shape);
   13469           0 :       if (__pyx_t_2) {
   13470             : 
   13471             :         /* "View.MemoryView":852
   13472             :  *                     stop = 0
   13473             :  *             elif stop > shape:
   13474             :  *                 stop = shape             # <<<<<<<<<<<<<<
   13475             :  *         else:
   13476             :  *             if negative_step:
   13477             :  */
   13478             :         __pyx_v_stop = __pyx_v_shape;
   13479             : 
   13480             :         /* "View.MemoryView":851
   13481             :  *                 if stop < 0:
   13482             :  *                     stop = 0
   13483             :  *             elif stop > shape:             # <<<<<<<<<<<<<<
   13484             :  *                 stop = shape
   13485             :  *         else:
   13486             :  */
   13487             :       }
   13488           0 :       __pyx_L14:;
   13489             : 
   13490             :       /* "View.MemoryView":846
   13491             :  *                 start = 0
   13492             :  * 
   13493             :  *         if have_stop:             # <<<<<<<<<<<<<<
   13494             :  *             if stop < 0:
   13495             :  *                 stop += shape
   13496             :  */
   13497           0 :       goto __pyx_L13;
   13498             :     }
   13499             : 
   13500             :     /* "View.MemoryView":854
   13501             :  *                 stop = shape
   13502             :  *         else:
   13503             :  *             if negative_step:             # <<<<<<<<<<<<<<
   13504             :  *                 stop = -1
   13505             :  *             else:
   13506             :  */
   13507             :     /*else*/ {
   13508           0 :       if (__pyx_v_negative_step) {
   13509             : 
   13510             :         /* "View.MemoryView":855
   13511             :  *         else:
   13512             :  *             if negative_step:
   13513             :  *                 stop = -1             # <<<<<<<<<<<<<<
   13514             :  *             else:
   13515             :  *                 stop = shape
   13516             :  */
   13517           0 :         __pyx_v_stop = -1L;
   13518             : 
   13519             :         /* "View.MemoryView":854
   13520             :  *                 stop = shape
   13521             :  *         else:
   13522             :  *             if negative_step:             # <<<<<<<<<<<<<<
   13523             :  *                 stop = -1
   13524             :  *             else:
   13525             :  */
   13526           0 :         goto __pyx_L16;
   13527             :       }
   13528             : 
   13529             :       /* "View.MemoryView":857
   13530             :  *                 stop = -1
   13531             :  *             else:
   13532             :  *                 stop = shape             # <<<<<<<<<<<<<<
   13533             :  * 
   13534             :  * 
   13535             :  */
   13536             :       /*else*/ {
   13537             :         __pyx_v_stop = __pyx_v_shape;
   13538             :       }
   13539           0 :       __pyx_L16:;
   13540             :     }
   13541           0 :     __pyx_L13:;
   13542             : 
   13543             :     /* "View.MemoryView":861
   13544             :  * 
   13545             :  *         with cython.cdivision(True):
   13546             :  *             new_shape = (stop - start) // step             # <<<<<<<<<<<<<<
   13547             :  * 
   13548             :  *             if (stop - start) - step * new_shape:
   13549             :  */
   13550           0 :     __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step);
   13551             : 
   13552             :     /* "View.MemoryView":863
   13553             :  *             new_shape = (stop - start) // step
   13554             :  * 
   13555             :  *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
   13556             :  *                 new_shape += 1
   13557             :  * 
   13558             :  */
   13559           0 :     __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0);
   13560           0 :     if (__pyx_t_2) {
   13561             : 
   13562             :       /* "View.MemoryView":864
   13563             :  * 
   13564             :  *             if (stop - start) - step * new_shape:
   13565             :  *                 new_shape += 1             # <<<<<<<<<<<<<<
   13566             :  * 
   13567             :  *         if new_shape < 0:
   13568             :  */
   13569           0 :       __pyx_v_new_shape = (__pyx_v_new_shape + 1);
   13570             : 
   13571             :       /* "View.MemoryView":863
   13572             :  *             new_shape = (stop - start) // step
   13573             :  * 
   13574             :  *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
   13575             :  *                 new_shape += 1
   13576             :  * 
   13577             :  */
   13578             :     }
   13579             : 
   13580             :     /* "View.MemoryView":866
   13581             :  *                 new_shape += 1
   13582             :  * 
   13583             :  *         if new_shape < 0:             # <<<<<<<<<<<<<<
   13584             :  *             new_shape = 0
   13585             :  * 
   13586             :  */
   13587           0 :     __pyx_t_2 = (__pyx_v_new_shape < 0);
   13588           0 :     if (__pyx_t_2) {
   13589             : 
   13590             :       /* "View.MemoryView":867
   13591             :  * 
   13592             :  *         if new_shape < 0:
   13593             :  *             new_shape = 0             # <<<<<<<<<<<<<<
   13594             :  * 
   13595             :  * 
   13596             :  */
   13597             :       __pyx_v_new_shape = 0;
   13598             : 
   13599             :       /* "View.MemoryView":866
   13600             :  *                 new_shape += 1
   13601             :  * 
   13602             :  *         if new_shape < 0:             # <<<<<<<<<<<<<<
   13603             :  *             new_shape = 0
   13604             :  * 
   13605             :  */
   13606             :     }
   13607             : 
   13608             :     /* "View.MemoryView":870
   13609             :  * 
   13610             :  * 
   13611             :  *         dst.strides[new_ndim] = stride * step             # <<<<<<<<<<<<<<
   13612             :  *         dst.shape[new_ndim] = new_shape
   13613             :  *         dst.suboffsets[new_ndim] = suboffset
   13614             :  */
   13615           0 :     (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step);
   13616             : 
   13617             :     /* "View.MemoryView":871
   13618             :  * 
   13619             :  *         dst.strides[new_ndim] = stride * step
   13620             :  *         dst.shape[new_ndim] = new_shape             # <<<<<<<<<<<<<<
   13621             :  *         dst.suboffsets[new_ndim] = suboffset
   13622             :  * 
   13623             :  */
   13624           0 :     (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape;
   13625             : 
   13626             :     /* "View.MemoryView":872
   13627             :  *         dst.strides[new_ndim] = stride * step
   13628             :  *         dst.shape[new_ndim] = new_shape
   13629             :  *         dst.suboffsets[new_ndim] = suboffset             # <<<<<<<<<<<<<<
   13630             :  * 
   13631             :  * 
   13632             :  */
   13633           0 :     (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset;
   13634             :   }
   13635           0 :   __pyx_L3:;
   13636             : 
   13637             :   /* "View.MemoryView":875
   13638             :  * 
   13639             :  * 
   13640             :  *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
   13641             :  *         dst.data += start * stride
   13642             :  *     else:
   13643             :  */
   13644           0 :   __pyx_t_2 = ((__pyx_v_suboffset_dim[0]) < 0);
   13645           0 :   if (__pyx_t_2) {
   13646             : 
   13647             :     /* "View.MemoryView":876
   13648             :  * 
   13649             :  *     if suboffset_dim[0] < 0:
   13650             :  *         dst.data += start * stride             # <<<<<<<<<<<<<<
   13651             :  *     else:
   13652             :  *         dst.suboffsets[suboffset_dim[0]] += start * stride
   13653             :  */
   13654           0 :     __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride));
   13655             : 
   13656             :     /* "View.MemoryView":875
   13657             :  * 
   13658             :  * 
   13659             :  *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
   13660             :  *         dst.data += start * stride
   13661             :  *     else:
   13662             :  */
   13663           0 :     goto __pyx_L19;
   13664             :   }
   13665             : 
   13666             :   /* "View.MemoryView":878
   13667             :  *         dst.data += start * stride
   13668             :  *     else:
   13669             :  *         dst.suboffsets[suboffset_dim[0]] += start * stride             # <<<<<<<<<<<<<<
   13670             :  * 
   13671             :  *     if suboffset >= 0:
   13672             :  */
   13673             :   /*else*/ {
   13674           0 :     __pyx_t_3 = (__pyx_v_suboffset_dim[0]);
   13675           0 :     (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride));
   13676             :   }
   13677           0 :   __pyx_L19:;
   13678             : 
   13679             :   /* "View.MemoryView":880
   13680             :  *         dst.suboffsets[suboffset_dim[0]] += start * stride
   13681             :  * 
   13682             :  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
   13683             :  *         if not is_slice:
   13684             :  *             if new_ndim == 0:
   13685             :  */
   13686           0 :   __pyx_t_2 = (__pyx_v_suboffset >= 0);
   13687           0 :   if (__pyx_t_2) {
   13688             : 
   13689             :     /* "View.MemoryView":881
   13690             :  * 
   13691             :  *     if suboffset >= 0:
   13692             :  *         if not is_slice:             # <<<<<<<<<<<<<<
   13693             :  *             if new_ndim == 0:
   13694             :  *                 dst.data = (<char **> dst.data)[0] + suboffset
   13695             :  */
   13696           0 :     __pyx_t_2 = (!__pyx_v_is_slice);
   13697           0 :     if (__pyx_t_2) {
   13698             : 
   13699             :       /* "View.MemoryView":882
   13700             :  *     if suboffset >= 0:
   13701             :  *         if not is_slice:
   13702             :  *             if new_ndim == 0:             # <<<<<<<<<<<<<<
   13703             :  *                 dst.data = (<char **> dst.data)[0] + suboffset
   13704             :  *             else:
   13705             :  */
   13706           0 :       __pyx_t_2 = (__pyx_v_new_ndim == 0);
   13707           0 :       if (__pyx_t_2) {
   13708             : 
   13709             :         /* "View.MemoryView":883
   13710             :  *         if not is_slice:
   13711             :  *             if new_ndim == 0:
   13712             :  *                 dst.data = (<char **> dst.data)[0] + suboffset             # <<<<<<<<<<<<<<
   13713             :  *             else:
   13714             :  *                 _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d "
   13715             :  */
   13716           0 :         __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset);
   13717             : 
   13718             :         /* "View.MemoryView":882
   13719             :  *     if suboffset >= 0:
   13720             :  *         if not is_slice:
   13721             :  *             if new_ndim == 0:             # <<<<<<<<<<<<<<
   13722             :  *                 dst.data = (<char **> dst.data)[0] + suboffset
   13723             :  *             else:
   13724             :  */
   13725           0 :         goto __pyx_L22;
   13726             :       }
   13727             : 
   13728             :       /* "View.MemoryView":885
   13729             :  *                 dst.data = (<char **> dst.data)[0] + suboffset
   13730             :  *             else:
   13731             :  *                 _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d "             # <<<<<<<<<<<<<<
   13732             :  *                                      "must be indexed and not sliced", dim)
   13733             :  *         else:
   13734             :  */
   13735             :       /*else*/ {
   13736             : 
   13737             :         /* "View.MemoryView":886
   13738             :  *             else:
   13739             :  *                 _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d "
   13740             :  *                                      "must be indexed and not sliced", dim)             # <<<<<<<<<<<<<<
   13741             :  *         else:
   13742             :  *             suboffset_dim[0] = new_ndim
   13743             :  */
   13744           0 :         __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_kp_s_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 885, __pyx_L1_error)
   13745             :       }
   13746           0 :       __pyx_L22:;
   13747             : 
   13748             :       /* "View.MemoryView":881
   13749             :  * 
   13750             :  *     if suboffset >= 0:
   13751             :  *         if not is_slice:             # <<<<<<<<<<<<<<
   13752             :  *             if new_ndim == 0:
   13753             :  *                 dst.data = (<char **> dst.data)[0] + suboffset
   13754             :  */
   13755           0 :       goto __pyx_L21;
   13756             :     }
   13757             : 
   13758             :     /* "View.MemoryView":888
   13759             :  *                                      "must be indexed and not sliced", dim)
   13760             :  *         else:
   13761             :  *             suboffset_dim[0] = new_ndim             # <<<<<<<<<<<<<<
   13762             :  * 
   13763             :  *     return 0
   13764             :  */
   13765             :     /*else*/ {
   13766           0 :       (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim;
   13767             :     }
   13768           0 :     __pyx_L21:;
   13769             : 
   13770             :     /* "View.MemoryView":880
   13771             :  *         dst.suboffsets[suboffset_dim[0]] += start * stride
   13772             :  * 
   13773             :  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
   13774             :  *         if not is_slice:
   13775             :  *             if new_ndim == 0:
   13776             :  */
   13777             :   }
   13778             : 
   13779             :   /* "View.MemoryView":890
   13780             :  *             suboffset_dim[0] = new_ndim
   13781             :  * 
   13782             :  *     return 0             # <<<<<<<<<<<<<<
   13783             :  * 
   13784             :  * 
   13785             :  */
   13786           0 :   __pyx_r = 0;
   13787           0 :   goto __pyx_L0;
   13788             : 
   13789             :   /* "View.MemoryView":793
   13790             :  * 
   13791             :  * @cname('__pyx_memoryview_slice_memviewslice')
   13792             :  * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
   13793             :  *         __Pyx_memviewslice *dst,
   13794             :  *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
   13795             :  */
   13796             : 
   13797             :   /* function exit code */
   13798           0 :   __pyx_L1_error:;
   13799             :   #ifdef WITH_THREAD
   13800           0 :   __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   13801             :   #endif
   13802           0 :   __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   13803           0 :   __pyx_r = -1;
   13804             :   #ifdef WITH_THREAD
   13805           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   13806             :   #endif
   13807           0 :   __pyx_L0:;
   13808           0 :   return __pyx_r;
   13809             : }
   13810             : 
   13811             : /* "View.MemoryView":896
   13812             :  * 
   13813             :  * @cname('__pyx_pybuffer_index')
   13814             :  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
   13815             :  *                           Py_ssize_t dim) except NULL:
   13816             :  *     cdef Py_ssize_t shape, stride, suboffset = -1
   13817             :  */
   13818             : 
   13819           0 : static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) {
   13820           0 :   Py_ssize_t __pyx_v_shape;
   13821           0 :   Py_ssize_t __pyx_v_stride;
   13822           0 :   Py_ssize_t __pyx_v_suboffset;
   13823           0 :   Py_ssize_t __pyx_v_itemsize;
   13824           0 :   char *__pyx_v_resultp;
   13825           0 :   char *__pyx_r;
   13826             :   __Pyx_RefNannyDeclarations
   13827           0 :   Py_ssize_t __pyx_t_1;
   13828           0 :   int __pyx_t_2;
   13829           0 :   PyObject *__pyx_t_3 = NULL;
   13830           0 :   Py_UCS4 __pyx_t_4;
   13831           0 :   PyObject *__pyx_t_5 = NULL;
   13832           0 :   int __pyx_lineno = 0;
   13833           0 :   const char *__pyx_filename = NULL;
   13834           0 :   int __pyx_clineno = 0;
   13835           0 :   __Pyx_RefNannySetupContext("pybuffer_index", 1);
   13836             : 
   13837             :   /* "View.MemoryView":898
   13838             :  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,
   13839             :  *                           Py_ssize_t dim) except NULL:
   13840             :  *     cdef Py_ssize_t shape, stride, suboffset = -1             # <<<<<<<<<<<<<<
   13841             :  *     cdef Py_ssize_t itemsize = view.itemsize
   13842             :  *     cdef char *resultp
   13843             :  */
   13844           0 :   __pyx_v_suboffset = -1L;
   13845             : 
   13846             :   /* "View.MemoryView":899
   13847             :  *                           Py_ssize_t dim) except NULL:
   13848             :  *     cdef Py_ssize_t shape, stride, suboffset = -1
   13849             :  *     cdef Py_ssize_t itemsize = view.itemsize             # <<<<<<<<<<<<<<
   13850             :  *     cdef char *resultp
   13851             :  * 
   13852             :  */
   13853           0 :   __pyx_t_1 = __pyx_v_view->itemsize;
   13854           0 :   __pyx_v_itemsize = __pyx_t_1;
   13855             : 
   13856             :   /* "View.MemoryView":902
   13857             :  *     cdef char *resultp
   13858             :  * 
   13859             :  *     if view.ndim == 0:             # <<<<<<<<<<<<<<
   13860             :  *         shape = view.len // itemsize
   13861             :  *         stride = itemsize
   13862             :  */
   13863           0 :   __pyx_t_2 = (__pyx_v_view->ndim == 0);
   13864           0 :   if (__pyx_t_2) {
   13865             : 
   13866             :     /* "View.MemoryView":903
   13867             :  * 
   13868             :  *     if view.ndim == 0:
   13869             :  *         shape = view.len // itemsize             # <<<<<<<<<<<<<<
   13870             :  *         stride = itemsize
   13871             :  *     else:
   13872             :  */
   13873           0 :     if (unlikely(__pyx_v_itemsize == 0)) {
   13874           0 :       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
   13875           0 :       __PYX_ERR(1, 903, __pyx_L1_error)
   13876             :     }
   13877           0 :     else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1)  && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) {
   13878           0 :       PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
   13879           0 :       __PYX_ERR(1, 903, __pyx_L1_error)
   13880             :     }
   13881           0 :     __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize);
   13882             : 
   13883             :     /* "View.MemoryView":904
   13884             :  *     if view.ndim == 0:
   13885             :  *         shape = view.len // itemsize
   13886             :  *         stride = itemsize             # <<<<<<<<<<<<<<
   13887             :  *     else:
   13888             :  *         shape = view.shape[dim]
   13889             :  */
   13890           0 :     __pyx_v_stride = __pyx_v_itemsize;
   13891             : 
   13892             :     /* "View.MemoryView":902
   13893             :  *     cdef char *resultp
   13894             :  * 
   13895             :  *     if view.ndim == 0:             # <<<<<<<<<<<<<<
   13896             :  *         shape = view.len // itemsize
   13897             :  *         stride = itemsize
   13898             :  */
   13899           0 :     goto __pyx_L3;
   13900             :   }
   13901             : 
   13902             :   /* "View.MemoryView":906
   13903             :  *         stride = itemsize
   13904             :  *     else:
   13905             :  *         shape = view.shape[dim]             # <<<<<<<<<<<<<<
   13906             :  *         stride = view.strides[dim]
   13907             :  *         if view.suboffsets != NULL:
   13908             :  */
   13909             :   /*else*/ {
   13910           0 :     __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]);
   13911             : 
   13912             :     /* "View.MemoryView":907
   13913             :  *     else:
   13914             :  *         shape = view.shape[dim]
   13915             :  *         stride = view.strides[dim]             # <<<<<<<<<<<<<<
   13916             :  *         if view.suboffsets != NULL:
   13917             :  *             suboffset = view.suboffsets[dim]
   13918             :  */
   13919           0 :     __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]);
   13920             : 
   13921             :     /* "View.MemoryView":908
   13922             :  *         shape = view.shape[dim]
   13923             :  *         stride = view.strides[dim]
   13924             :  *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
   13925             :  *             suboffset = view.suboffsets[dim]
   13926             :  * 
   13927             :  */
   13928           0 :     __pyx_t_2 = (__pyx_v_view->suboffsets != NULL);
   13929           0 :     if (__pyx_t_2) {
   13930             : 
   13931             :       /* "View.MemoryView":909
   13932             :  *         stride = view.strides[dim]
   13933             :  *         if view.suboffsets != NULL:
   13934             :  *             suboffset = view.suboffsets[dim]             # <<<<<<<<<<<<<<
   13935             :  * 
   13936             :  *     if index < 0:
   13937             :  */
   13938           0 :       __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]);
   13939             : 
   13940             :       /* "View.MemoryView":908
   13941             :  *         shape = view.shape[dim]
   13942             :  *         stride = view.strides[dim]
   13943             :  *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
   13944             :  *             suboffset = view.suboffsets[dim]
   13945             :  * 
   13946             :  */
   13947             :     }
   13948             :   }
   13949           0 :   __pyx_L3:;
   13950             : 
   13951             :   /* "View.MemoryView":911
   13952             :  *             suboffset = view.suboffsets[dim]
   13953             :  * 
   13954             :  *     if index < 0:             # <<<<<<<<<<<<<<
   13955             :  *         index += view.shape[dim]
   13956             :  *         if index < 0:
   13957             :  */
   13958           0 :   __pyx_t_2 = (__pyx_v_index < 0);
   13959           0 :   if (__pyx_t_2) {
   13960             : 
   13961             :     /* "View.MemoryView":912
   13962             :  * 
   13963             :  *     if index < 0:
   13964             :  *         index += view.shape[dim]             # <<<<<<<<<<<<<<
   13965             :  *         if index < 0:
   13966             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   13967             :  */
   13968           0 :     __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim]));
   13969             : 
   13970             :     /* "View.MemoryView":913
   13971             :  *     if index < 0:
   13972             :  *         index += view.shape[dim]
   13973             :  *         if index < 0:             # <<<<<<<<<<<<<<
   13974             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   13975             :  * 
   13976             :  */
   13977           0 :     __pyx_t_2 = (__pyx_v_index < 0);
   13978           0 :     if (unlikely(__pyx_t_2)) {
   13979             : 
   13980             :       /* "View.MemoryView":914
   13981             :  *         index += view.shape[dim]
   13982             :  *         if index < 0:
   13983             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"             # <<<<<<<<<<<<<<
   13984             :  * 
   13985             :  *     if index >= shape:
   13986             :  */
   13987           0 :       __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 914, __pyx_L1_error)
   13988           0 :       __Pyx_GOTREF(__pyx_t_3);
   13989           0 :       __pyx_t_1 = 0;
   13990           0 :       __pyx_t_4 = 127;
   13991           0 :       __Pyx_INCREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   13992           0 :       __pyx_t_1 += 37;
   13993           0 :       __Pyx_GIVEREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   13994           0 :       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   13995           0 :       __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error)
   13996           0 :       __Pyx_GOTREF(__pyx_t_5);
   13997           0 :       __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
   13998           0 :       __Pyx_GIVEREF(__pyx_t_5);
   13999           0 :       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
   14000           0 :       __pyx_t_5 = 0;
   14001           0 :       __Pyx_INCREF(__pyx_kp_u__7);
   14002           0 :       __pyx_t_1 += 1;
   14003           0 :       __Pyx_GIVEREF(__pyx_kp_u__7);
   14004           0 :       PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__7);
   14005           0 :       __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error)
   14006           0 :       __Pyx_GOTREF(__pyx_t_5);
   14007           0 :       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   14008           0 :       __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_5, 0, 0);
   14009           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   14010           0 :       __PYX_ERR(1, 914, __pyx_L1_error)
   14011             : 
   14012             :       /* "View.MemoryView":913
   14013             :  *     if index < 0:
   14014             :  *         index += view.shape[dim]
   14015             :  *         if index < 0:             # <<<<<<<<<<<<<<
   14016             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14017             :  * 
   14018             :  */
   14019             :     }
   14020             : 
   14021             :     /* "View.MemoryView":911
   14022             :  *             suboffset = view.suboffsets[dim]
   14023             :  * 
   14024             :  *     if index < 0:             # <<<<<<<<<<<<<<
   14025             :  *         index += view.shape[dim]
   14026             :  *         if index < 0:
   14027             :  */
   14028             :   }
   14029             : 
   14030             :   /* "View.MemoryView":916
   14031             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14032             :  * 
   14033             :  *     if index >= shape:             # <<<<<<<<<<<<<<
   14034             :  *         raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14035             :  * 
   14036             :  */
   14037           0 :   __pyx_t_2 = (__pyx_v_index >= __pyx_v_shape);
   14038           0 :   if (unlikely(__pyx_t_2)) {
   14039             : 
   14040             :     /* "View.MemoryView":917
   14041             :  * 
   14042             :  *     if index >= shape:
   14043             :  *         raise IndexError, f"Out of bounds on buffer access (axis {dim})"             # <<<<<<<<<<<<<<
   14044             :  * 
   14045             :  *     resultp = bufp + index * stride
   14046             :  */
   14047           0 :     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 917, __pyx_L1_error)
   14048           0 :     __Pyx_GOTREF(__pyx_t_5);
   14049           0 :     __pyx_t_1 = 0;
   14050           0 :     __pyx_t_4 = 127;
   14051           0 :     __Pyx_INCREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   14052           0 :     __pyx_t_1 += 37;
   14053           0 :     __Pyx_GIVEREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   14054           0 :     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Out_of_bounds_on_buffer_access_a);
   14055           0 :     __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error)
   14056           0 :     __Pyx_GOTREF(__pyx_t_3);
   14057           0 :     __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
   14058           0 :     __Pyx_GIVEREF(__pyx_t_3);
   14059           0 :     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
   14060           0 :     __pyx_t_3 = 0;
   14061           0 :     __Pyx_INCREF(__pyx_kp_u__7);
   14062           0 :     __pyx_t_1 += 1;
   14063           0 :     __Pyx_GIVEREF(__pyx_kp_u__7);
   14064           0 :     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__7);
   14065           0 :     __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error)
   14066           0 :     __Pyx_GOTREF(__pyx_t_3);
   14067           0 :     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   14068           0 :     __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_3, 0, 0);
   14069           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   14070           0 :     __PYX_ERR(1, 917, __pyx_L1_error)
   14071             : 
   14072             :     /* "View.MemoryView":916
   14073             :  *             raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14074             :  * 
   14075             :  *     if index >= shape:             # <<<<<<<<<<<<<<
   14076             :  *         raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14077             :  * 
   14078             :  */
   14079             :   }
   14080             : 
   14081             :   /* "View.MemoryView":919
   14082             :  *         raise IndexError, f"Out of bounds on buffer access (axis {dim})"
   14083             :  * 
   14084             :  *     resultp = bufp + index * stride             # <<<<<<<<<<<<<<
   14085             :  *     if suboffset >= 0:
   14086             :  *         resultp = (<char **> resultp)[0] + suboffset
   14087             :  */
   14088           0 :   __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride));
   14089             : 
   14090             :   /* "View.MemoryView":920
   14091             :  * 
   14092             :  *     resultp = bufp + index * stride
   14093             :  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
   14094             :  *         resultp = (<char **> resultp)[0] + suboffset
   14095             :  * 
   14096             :  */
   14097           0 :   __pyx_t_2 = (__pyx_v_suboffset >= 0);
   14098           0 :   if (__pyx_t_2) {
   14099             : 
   14100             :     /* "View.MemoryView":921
   14101             :  *     resultp = bufp + index * stride
   14102             :  *     if suboffset >= 0:
   14103             :  *         resultp = (<char **> resultp)[0] + suboffset             # <<<<<<<<<<<<<<
   14104             :  * 
   14105             :  *     return resultp
   14106             :  */
   14107           0 :     __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset);
   14108             : 
   14109             :     /* "View.MemoryView":920
   14110             :  * 
   14111             :  *     resultp = bufp + index * stride
   14112             :  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
   14113             :  *         resultp = (<char **> resultp)[0] + suboffset
   14114             :  * 
   14115             :  */
   14116             :   }
   14117             : 
   14118             :   /* "View.MemoryView":923
   14119             :  *         resultp = (<char **> resultp)[0] + suboffset
   14120             :  * 
   14121             :  *     return resultp             # <<<<<<<<<<<<<<
   14122             :  * 
   14123             :  * 
   14124             :  */
   14125           0 :   __pyx_r = __pyx_v_resultp;
   14126           0 :   goto __pyx_L0;
   14127             : 
   14128             :   /* "View.MemoryView":896
   14129             :  * 
   14130             :  * @cname('__pyx_pybuffer_index')
   14131             :  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
   14132             :  *                           Py_ssize_t dim) except NULL:
   14133             :  *     cdef Py_ssize_t shape, stride, suboffset = -1
   14134             :  */
   14135             : 
   14136             :   /* function exit code */
   14137           0 :   __pyx_L1_error:;
   14138           0 :   __Pyx_XDECREF(__pyx_t_3);
   14139           0 :   __Pyx_XDECREF(__pyx_t_5);
   14140           0 :   __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14141           0 :   __pyx_r = NULL;
   14142           0 :   __pyx_L0:;
   14143           0 :   __Pyx_RefNannyFinishContext();
   14144           0 :   return __pyx_r;
   14145             : }
   14146             : 
   14147             : /* "View.MemoryView":929
   14148             :  * 
   14149             :  * @cname('__pyx_memslice_transpose')
   14150             :  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil:             # <<<<<<<<<<<<<<
   14151             :  *     cdef int ndim = memslice.memview.view.ndim
   14152             :  * 
   14153             :  */
   14154             : 
   14155           0 : static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) {
   14156           0 :   int __pyx_v_ndim;
   14157           0 :   Py_ssize_t *__pyx_v_shape;
   14158           0 :   Py_ssize_t *__pyx_v_strides;
   14159           0 :   int __pyx_v_i;
   14160           0 :   int __pyx_v_j;
   14161           0 :   int __pyx_r;
   14162           0 :   int __pyx_t_1;
   14163           0 :   Py_ssize_t *__pyx_t_2;
   14164           0 :   long __pyx_t_3;
   14165           0 :   long __pyx_t_4;
   14166           0 :   Py_ssize_t __pyx_t_5;
   14167           0 :   Py_ssize_t __pyx_t_6;
   14168           0 :   int __pyx_t_7;
   14169           0 :   int __pyx_t_8;
   14170           0 :   int __pyx_t_9;
   14171           0 :   int __pyx_lineno = 0;
   14172           0 :   const char *__pyx_filename = NULL;
   14173           0 :   int __pyx_clineno = 0;
   14174             :   #ifdef WITH_THREAD
   14175           0 :   PyGILState_STATE __pyx_gilstate_save;
   14176             :   #endif
   14177             : 
   14178             :   /* "View.MemoryView":930
   14179             :  * @cname('__pyx_memslice_transpose')
   14180             :  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil:
   14181             :  *     cdef int ndim = memslice.memview.view.ndim             # <<<<<<<<<<<<<<
   14182             :  * 
   14183             :  *     cdef Py_ssize_t *shape = memslice.shape
   14184             :  */
   14185           0 :   __pyx_t_1 = __pyx_v_memslice->memview->view.ndim;
   14186           0 :   __pyx_v_ndim = __pyx_t_1;
   14187             : 
   14188             :   /* "View.MemoryView":932
   14189             :  *     cdef int ndim = memslice.memview.view.ndim
   14190             :  * 
   14191             :  *     cdef Py_ssize_t *shape = memslice.shape             # <<<<<<<<<<<<<<
   14192             :  *     cdef Py_ssize_t *strides = memslice.strides
   14193             :  * 
   14194             :  */
   14195           0 :   __pyx_t_2 = __pyx_v_memslice->shape;
   14196           0 :   __pyx_v_shape = __pyx_t_2;
   14197             : 
   14198             :   /* "View.MemoryView":933
   14199             :  * 
   14200             :  *     cdef Py_ssize_t *shape = memslice.shape
   14201             :  *     cdef Py_ssize_t *strides = memslice.strides             # <<<<<<<<<<<<<<
   14202             :  * 
   14203             :  * 
   14204             :  */
   14205           0 :   __pyx_t_2 = __pyx_v_memslice->strides;
   14206           0 :   __pyx_v_strides = __pyx_t_2;
   14207             : 
   14208             :   /* "View.MemoryView":937
   14209             :  * 
   14210             :  *     cdef int i, j
   14211             :  *     for i in range(ndim // 2):             # <<<<<<<<<<<<<<
   14212             :  *         j = ndim - 1 - i
   14213             :  *         strides[i], strides[j] = strides[j], strides[i]
   14214             :  */
   14215           0 :   __pyx_t_3 = __Pyx_div_long(__pyx_v_ndim, 2);
   14216           0 :   __pyx_t_4 = __pyx_t_3;
   14217           0 :   for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) {
   14218           0 :     __pyx_v_i = __pyx_t_1;
   14219             : 
   14220             :     /* "View.MemoryView":938
   14221             :  *     cdef int i, j
   14222             :  *     for i in range(ndim // 2):
   14223             :  *         j = ndim - 1 - i             # <<<<<<<<<<<<<<
   14224             :  *         strides[i], strides[j] = strides[j], strides[i]
   14225             :  *         shape[i], shape[j] = shape[j], shape[i]
   14226             :  */
   14227           0 :     __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i);
   14228             : 
   14229             :     /* "View.MemoryView":939
   14230             :  *     for i in range(ndim // 2):
   14231             :  *         j = ndim - 1 - i
   14232             :  *         strides[i], strides[j] = strides[j], strides[i]             # <<<<<<<<<<<<<<
   14233             :  *         shape[i], shape[j] = shape[j], shape[i]
   14234             :  * 
   14235             :  */
   14236           0 :     __pyx_t_5 = (__pyx_v_strides[__pyx_v_j]);
   14237           0 :     __pyx_t_6 = (__pyx_v_strides[__pyx_v_i]);
   14238           0 :     (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5;
   14239           0 :     (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6;
   14240             : 
   14241             :     /* "View.MemoryView":940
   14242             :  *         j = ndim - 1 - i
   14243             :  *         strides[i], strides[j] = strides[j], strides[i]
   14244             :  *         shape[i], shape[j] = shape[j], shape[i]             # <<<<<<<<<<<<<<
   14245             :  * 
   14246             :  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
   14247             :  */
   14248           0 :     __pyx_t_6 = (__pyx_v_shape[__pyx_v_j]);
   14249           0 :     __pyx_t_5 = (__pyx_v_shape[__pyx_v_i]);
   14250           0 :     (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6;
   14251           0 :     (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5;
   14252             : 
   14253             :     /* "View.MemoryView":942
   14254             :  *         shape[i], shape[j] = shape[j], shape[i]
   14255             :  * 
   14256             :  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
   14257             :  *             _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions")
   14258             :  * 
   14259             :  */
   14260           0 :     __pyx_t_8 = ((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0);
   14261           0 :     if (!__pyx_t_8) {
   14262           0 :     } else {
   14263           0 :       __pyx_t_7 = __pyx_t_8;
   14264           0 :       goto __pyx_L6_bool_binop_done;
   14265             :     }
   14266           0 :     __pyx_t_8 = ((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0);
   14267           0 :     __pyx_t_7 = __pyx_t_8;
   14268           0 :     __pyx_L6_bool_binop_done:;
   14269           0 :     if (__pyx_t_7) {
   14270             : 
   14271             :       /* "View.MemoryView":943
   14272             :  * 
   14273             :  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
   14274             :  *             _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions")             # <<<<<<<<<<<<<<
   14275             :  * 
   14276             :  *     return 0
   14277             :  */
   14278           0 :       __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_kp_s_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L1_error)
   14279             : 
   14280             :       /* "View.MemoryView":942
   14281             :  *         shape[i], shape[j] = shape[j], shape[i]
   14282             :  * 
   14283             :  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
   14284             :  *             _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions")
   14285             :  * 
   14286             :  */
   14287             :     }
   14288             :   }
   14289             : 
   14290             :   /* "View.MemoryView":945
   14291             :  *             _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions")
   14292             :  * 
   14293             :  *     return 0             # <<<<<<<<<<<<<<
   14294             :  * 
   14295             :  * 
   14296             :  */
   14297           0 :   __pyx_r = 0;
   14298           0 :   goto __pyx_L0;
   14299             : 
   14300             :   /* "View.MemoryView":929
   14301             :  * 
   14302             :  * @cname('__pyx_memslice_transpose')
   14303             :  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil:             # <<<<<<<<<<<<<<
   14304             :  *     cdef int ndim = memslice.memview.view.ndim
   14305             :  * 
   14306             :  */
   14307             : 
   14308             :   /* function exit code */
   14309           0 :   __pyx_L1_error:;
   14310             :   #ifdef WITH_THREAD
   14311           0 :   __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   14312             :   #endif
   14313           0 :   __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14314           0 :   __pyx_r = -1;
   14315             :   #ifdef WITH_THREAD
   14316           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   14317             :   #endif
   14318           0 :   __pyx_L0:;
   14319           0 :   return __pyx_r;
   14320             : }
   14321             : 
   14322             : /* "View.MemoryView":963
   14323             :  *     cdef int (*to_dtype_func)(char *, object) except 0
   14324             :  * 
   14325             :  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
   14326             :  *         __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1)
   14327             :  * 
   14328             :  */
   14329             : 
   14330             : /* Python wrapper */
   14331             : static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/
   14332           3 : static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) {
   14333           3 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   14334             :   __Pyx_RefNannyDeclarations
   14335           3 :   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
   14336           3 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   14337           6 :   __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));
   14338             : 
   14339             :   /* function exit code */
   14340           3 :   __Pyx_RefNannyFinishContext();
   14341             : }
   14342             : 
   14343           3 : static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
   14344             : 
   14345             :   /* "View.MemoryView":964
   14346             :  * 
   14347             :  *     def __dealloc__(self):
   14348             :  *         __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1)             # <<<<<<<<<<<<<<
   14349             :  * 
   14350             :  *     cdef convert_item_to_object(self, char *itemp):
   14351             :  */
   14352           3 :   __PYX_XCLEAR_MEMVIEW((&__pyx_v_self->from_slice), 1);
   14353             : 
   14354             :   /* "View.MemoryView":963
   14355             :  *     cdef int (*to_dtype_func)(char *, object) except 0
   14356             :  * 
   14357             :  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
   14358             :  *         __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1)
   14359             :  * 
   14360             :  */
   14361             : 
   14362             :   /* function exit code */
   14363             : }
   14364             : 
   14365             : /* "View.MemoryView":966
   14366             :  *         __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1)
   14367             :  * 
   14368             :  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
   14369             :  *         if self.to_object_func != NULL:
   14370             :  *             return self.to_object_func(itemp)
   14371             :  */
   14372             : 
   14373           0 : static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) {
   14374           0 :   PyObject *__pyx_r = NULL;
   14375             :   __Pyx_RefNannyDeclarations
   14376           0 :   int __pyx_t_1;
   14377           0 :   PyObject *__pyx_t_2 = NULL;
   14378           0 :   int __pyx_lineno = 0;
   14379           0 :   const char *__pyx_filename = NULL;
   14380           0 :   int __pyx_clineno = 0;
   14381           0 :   __Pyx_RefNannySetupContext("convert_item_to_object", 1);
   14382             : 
   14383             :   /* "View.MemoryView":967
   14384             :  * 
   14385             :  *     cdef convert_item_to_object(self, char *itemp):
   14386             :  *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
   14387             :  *             return self.to_object_func(itemp)
   14388             :  *         else:
   14389             :  */
   14390           0 :   __pyx_t_1 = (__pyx_v_self->to_object_func != NULL);
   14391           0 :   if (__pyx_t_1) {
   14392             : 
   14393             :     /* "View.MemoryView":968
   14394             :  *     cdef convert_item_to_object(self, char *itemp):
   14395             :  *         if self.to_object_func != NULL:
   14396             :  *             return self.to_object_func(itemp)             # <<<<<<<<<<<<<<
   14397             :  *         else:
   14398             :  *             return memoryview.convert_item_to_object(self, itemp)
   14399             :  */
   14400           0 :     __Pyx_XDECREF(__pyx_r);
   14401           0 :     __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 968, __pyx_L1_error)
   14402           0 :     __Pyx_GOTREF(__pyx_t_2);
   14403           0 :     __pyx_r = __pyx_t_2;
   14404           0 :     __pyx_t_2 = 0;
   14405           0 :     goto __pyx_L0;
   14406             : 
   14407             :     /* "View.MemoryView":967
   14408             :  * 
   14409             :  *     cdef convert_item_to_object(self, char *itemp):
   14410             :  *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
   14411             :  *             return self.to_object_func(itemp)
   14412             :  *         else:
   14413             :  */
   14414             :   }
   14415             : 
   14416             :   /* "View.MemoryView":970
   14417             :  *             return self.to_object_func(itemp)
   14418             :  *         else:
   14419             :  *             return memoryview.convert_item_to_object(self, itemp)             # <<<<<<<<<<<<<<
   14420             :  * 
   14421             :  *     cdef assign_item_from_object(self, char *itemp, object value):
   14422             :  */
   14423             :   /*else*/ {
   14424           0 :     __Pyx_XDECREF(__pyx_r);
   14425           0 :     __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 970, __pyx_L1_error)
   14426           0 :     __Pyx_GOTREF(__pyx_t_2);
   14427           0 :     __pyx_r = __pyx_t_2;
   14428           0 :     __pyx_t_2 = 0;
   14429           0 :     goto __pyx_L0;
   14430             :   }
   14431             : 
   14432             :   /* "View.MemoryView":966
   14433             :  *         __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1)
   14434             :  * 
   14435             :  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
   14436             :  *         if self.to_object_func != NULL:
   14437             :  *             return self.to_object_func(itemp)
   14438             :  */
   14439             : 
   14440             :   /* function exit code */
   14441           0 :   __pyx_L1_error:;
   14442           0 :   __Pyx_XDECREF(__pyx_t_2);
   14443           0 :   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14444           0 :   __pyx_r = 0;
   14445           0 :   __pyx_L0:;
   14446           0 :   __Pyx_XGIVEREF(__pyx_r);
   14447           0 :   __Pyx_RefNannyFinishContext();
   14448           0 :   return __pyx_r;
   14449             : }
   14450             : 
   14451             : /* "View.MemoryView":972
   14452             :  *             return memoryview.convert_item_to_object(self, itemp)
   14453             :  * 
   14454             :  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
   14455             :  *         if self.to_dtype_func != NULL:
   14456             :  *             self.to_dtype_func(itemp, value)
   14457             :  */
   14458             : 
   14459           0 : static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
   14460           0 :   PyObject *__pyx_r = NULL;
   14461             :   __Pyx_RefNannyDeclarations
   14462           0 :   int __pyx_t_1;
   14463           0 :   int __pyx_t_2;
   14464           0 :   PyObject *__pyx_t_3 = NULL;
   14465           0 :   int __pyx_lineno = 0;
   14466           0 :   const char *__pyx_filename = NULL;
   14467           0 :   int __pyx_clineno = 0;
   14468           0 :   __Pyx_RefNannySetupContext("assign_item_from_object", 1);
   14469             : 
   14470             :   /* "View.MemoryView":973
   14471             :  * 
   14472             :  *     cdef assign_item_from_object(self, char *itemp, object value):
   14473             :  *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
   14474             :  *             self.to_dtype_func(itemp, value)
   14475             :  *         else:
   14476             :  */
   14477           0 :   __pyx_t_1 = (__pyx_v_self->to_dtype_func != NULL);
   14478           0 :   if (__pyx_t_1) {
   14479             : 
   14480             :     /* "View.MemoryView":974
   14481             :  *     cdef assign_item_from_object(self, char *itemp, object value):
   14482             :  *         if self.to_dtype_func != NULL:
   14483             :  *             self.to_dtype_func(itemp, value)             # <<<<<<<<<<<<<<
   14484             :  *         else:
   14485             :  *             memoryview.assign_item_from_object(self, itemp, value)
   14486             :  */
   14487           0 :     __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 974, __pyx_L1_error)
   14488             : 
   14489             :     /* "View.MemoryView":973
   14490             :  * 
   14491             :  *     cdef assign_item_from_object(self, char *itemp, object value):
   14492             :  *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
   14493             :  *             self.to_dtype_func(itemp, value)
   14494             :  *         else:
   14495             :  */
   14496           0 :     goto __pyx_L3;
   14497             :   }
   14498             : 
   14499             :   /* "View.MemoryView":976
   14500             :  *             self.to_dtype_func(itemp, value)
   14501             :  *         else:
   14502             :  *             memoryview.assign_item_from_object(self, itemp, value)             # <<<<<<<<<<<<<<
   14503             :  * 
   14504             :  *     cdef _get_base(self):
   14505             :  */
   14506             :   /*else*/ {
   14507           0 :     __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 976, __pyx_L1_error)
   14508           0 :     __Pyx_GOTREF(__pyx_t_3);
   14509           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   14510             :   }
   14511           0 :   __pyx_L3:;
   14512             : 
   14513             :   /* "View.MemoryView":972
   14514             :  *             return memoryview.convert_item_to_object(self, itemp)
   14515             :  * 
   14516             :  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
   14517             :  *         if self.to_dtype_func != NULL:
   14518             :  *             self.to_dtype_func(itemp, value)
   14519             :  */
   14520             : 
   14521             :   /* function exit code */
   14522           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   14523           0 :   goto __pyx_L0;
   14524           0 :   __pyx_L1_error:;
   14525           0 :   __Pyx_XDECREF(__pyx_t_3);
   14526           0 :   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14527           0 :   __pyx_r = 0;
   14528           0 :   __pyx_L0:;
   14529           0 :   __Pyx_XGIVEREF(__pyx_r);
   14530           0 :   __Pyx_RefNannyFinishContext();
   14531           0 :   return __pyx_r;
   14532             : }
   14533             : 
   14534             : /* "View.MemoryView":978
   14535             :  *             memoryview.assign_item_from_object(self, itemp, value)
   14536             :  * 
   14537             :  *     cdef _get_base(self):             # <<<<<<<<<<<<<<
   14538             :  *         return self.from_object
   14539             :  * 
   14540             :  */
   14541             : 
   14542           0 : static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
   14543           0 :   PyObject *__pyx_r = NULL;
   14544             :   __Pyx_RefNannyDeclarations
   14545           0 :   __Pyx_RefNannySetupContext("_get_base", 1);
   14546             : 
   14547             :   /* "View.MemoryView":979
   14548             :  * 
   14549             :  *     cdef _get_base(self):
   14550             :  *         return self.from_object             # <<<<<<<<<<<<<<
   14551             :  * 
   14552             :  * 
   14553             :  */
   14554           0 :   __Pyx_XDECREF(__pyx_r);
   14555           0 :   __Pyx_INCREF(__pyx_v_self->from_object);
   14556           0 :   __pyx_r = __pyx_v_self->from_object;
   14557           0 :   goto __pyx_L0;
   14558             : 
   14559             :   /* "View.MemoryView":978
   14560             :  *             memoryview.assign_item_from_object(self, itemp, value)
   14561             :  * 
   14562             :  *     cdef _get_base(self):             # <<<<<<<<<<<<<<
   14563             :  *         return self.from_object
   14564             :  * 
   14565             :  */
   14566             : 
   14567             :   /* function exit code */
   14568           0 :   __pyx_L0:;
   14569           0 :   __Pyx_XGIVEREF(__pyx_r);
   14570           0 :   __Pyx_RefNannyFinishContext();
   14571           0 :   return __pyx_r;
   14572             : }
   14573             : 
   14574             : /* "(tree fragment)":1
   14575             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
   14576             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14577             :  * def __setstate_cython__(self, __pyx_state):
   14578             :  */
   14579             : 
   14580             : /* Python wrapper */
   14581             : static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, 
   14582             : #if CYTHON_METH_FASTCALL
   14583             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   14584             : #else
   14585             : PyObject *__pyx_args, PyObject *__pyx_kwds
   14586             : #endif
   14587             : ); /*proto*/
   14588           0 : static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, 
   14589             : #if CYTHON_METH_FASTCALL
   14590             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   14591             : #else
   14592             : PyObject *__pyx_args, PyObject *__pyx_kwds
   14593             : #endif
   14594             : ) {
   14595             :   #if !CYTHON_METH_FASTCALL
   14596             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   14597             :   #endif
   14598           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   14599           0 :   PyObject *__pyx_r = 0;
   14600             :   __Pyx_RefNannyDeclarations
   14601           0 :   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
   14602             :   #if !CYTHON_METH_FASTCALL
   14603             :   #if CYTHON_ASSUME_SAFE_MACROS
   14604             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   14605             :   #else
   14606             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   14607             :   #endif
   14608             :   #endif
   14609           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   14610           0 :   if (unlikely(__pyx_nargs > 0)) {
   14611           0 :     __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
   14612           0 :   if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
   14613           0 :   __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));
   14614             : 
   14615             :   /* function exit code */
   14616           0 :   __Pyx_RefNannyFinishContext();
   14617           0 :   return __pyx_r;
   14618             : }
   14619             : 
   14620           0 : static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) {
   14621           0 :   PyObject *__pyx_r = NULL;
   14622             :   __Pyx_RefNannyDeclarations
   14623           0 :   int __pyx_lineno = 0;
   14624           0 :   const char *__pyx_filename = NULL;
   14625           0 :   int __pyx_clineno = 0;
   14626           0 :   __Pyx_RefNannySetupContext("__reduce_cython__", 1);
   14627             : 
   14628             :   /* "(tree fragment)":2
   14629             :  * def __reduce_cython__(self):
   14630             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
   14631             :  * def __setstate_cython__(self, __pyx_state):
   14632             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14633             :  */
   14634           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
   14635           0 :   __PYX_ERR(1, 2, __pyx_L1_error)
   14636             : 
   14637             :   /* "(tree fragment)":1
   14638             :  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
   14639             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14640             :  * def __setstate_cython__(self, __pyx_state):
   14641             :  */
   14642             : 
   14643             :   /* function exit code */
   14644           0 :   __pyx_L1_error:;
   14645           0 :   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14646           0 :   __pyx_r = NULL;
   14647           0 :   __Pyx_XGIVEREF(__pyx_r);
   14648           0 :   __Pyx_RefNannyFinishContext();
   14649           0 :   return __pyx_r;
   14650             : }
   14651             : 
   14652             : /* "(tree fragment)":3
   14653             :  * def __reduce_cython__(self):
   14654             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14655             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
   14656             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14657             :  */
   14658             : 
   14659             : /* Python wrapper */
   14660             : static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, 
   14661             : #if CYTHON_METH_FASTCALL
   14662             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   14663             : #else
   14664             : PyObject *__pyx_args, PyObject *__pyx_kwds
   14665             : #endif
   14666             : ); /*proto*/
   14667           0 : static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, 
   14668             : #if CYTHON_METH_FASTCALL
   14669             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   14670             : #else
   14671             : PyObject *__pyx_args, PyObject *__pyx_kwds
   14672             : #endif
   14673             : ) {
   14674           0 :   CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
   14675             :   #if !CYTHON_METH_FASTCALL
   14676             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   14677             :   #endif
   14678           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   14679           0 :   PyObject* values[1] = {0};
   14680           0 :   int __pyx_lineno = 0;
   14681           0 :   const char *__pyx_filename = NULL;
   14682           0 :   int __pyx_clineno = 0;
   14683           0 :   PyObject *__pyx_r = 0;
   14684             :   __Pyx_RefNannyDeclarations
   14685           0 :   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
   14686             :   #if !CYTHON_METH_FASTCALL
   14687             :   #if CYTHON_ASSUME_SAFE_MACROS
   14688             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   14689             :   #else
   14690             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   14691             :   #endif
   14692             :   #endif
   14693           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   14694             :   {
   14695           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
   14696           0 :     if (__pyx_kwds) {
   14697           0 :       Py_ssize_t kw_args;
   14698           0 :       switch (__pyx_nargs) {
   14699           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   14700           0 :         CYTHON_FALLTHROUGH;
   14701           0 :         case  0: break;
   14702           0 :         default: goto __pyx_L5_argtuple_error;
   14703             :       }
   14704           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
   14705           0 :       switch (__pyx_nargs) {
   14706             :         case  0:
   14707           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
   14708           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
   14709           0 :           kw_args--;
   14710             :         }
   14711           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error)
   14712           0 :         else goto __pyx_L5_argtuple_error;
   14713             :       }
   14714           0 :       if (unlikely(kw_args > 0)) {
   14715           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   14716           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error)
   14717             :       }
   14718           0 :     } else if (unlikely(__pyx_nargs != 1)) {
   14719           0 :       goto __pyx_L5_argtuple_error;
   14720             :     } else {
   14721           0 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   14722             :     }
   14723           0 :     __pyx_v___pyx_state = values[0];
   14724             :   }
   14725           0 :   goto __pyx_L6_skip;
   14726           0 :   __pyx_L5_argtuple_error:;
   14727           0 :   __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
   14728           0 :   __pyx_L6_skip:;
   14729           0 :   goto __pyx_L4_argument_unpacking_done;
   14730           0 :   __pyx_L3_error:;
   14731             :   {
   14732           0 :     Py_ssize_t __pyx_temp;
   14733           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   14734             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   14735             :     }
   14736             :   }
   14737           0 :   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14738           0 :   __Pyx_RefNannyFinishContext();
   14739           0 :   return NULL;
   14740           0 :   __pyx_L4_argument_unpacking_done:;
   14741           0 :   __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), __pyx_v___pyx_state);
   14742             : 
   14743             :   /* function exit code */
   14744             :   {
   14745           0 :     Py_ssize_t __pyx_temp;
   14746           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   14747             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   14748             :     }
   14749             :   }
   14750             :   __Pyx_RefNannyFinishContext();
   14751             :   return __pyx_r;
   14752             : }
   14753             : 
   14754           0 : static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
   14755           0 :   PyObject *__pyx_r = NULL;
   14756             :   __Pyx_RefNannyDeclarations
   14757           0 :   int __pyx_lineno = 0;
   14758           0 :   const char *__pyx_filename = NULL;
   14759           0 :   int __pyx_clineno = 0;
   14760           0 :   __Pyx_RefNannySetupContext("__setstate_cython__", 1);
   14761             : 
   14762             :   /* "(tree fragment)":4
   14763             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14764             :  * def __setstate_cython__(self, __pyx_state):
   14765             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
   14766             :  */
   14767           0 :   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
   14768           0 :   __PYX_ERR(1, 4, __pyx_L1_error)
   14769             : 
   14770             :   /* "(tree fragment)":3
   14771             :  * def __reduce_cython__(self):
   14772             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14773             :  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
   14774             :  *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
   14775             :  */
   14776             : 
   14777             :   /* function exit code */
   14778           0 :   __pyx_L1_error:;
   14779           0 :   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   14780           0 :   __pyx_r = NULL;
   14781           0 :   __Pyx_XGIVEREF(__pyx_r);
   14782           0 :   __Pyx_RefNannyFinishContext();
   14783           0 :   return __pyx_r;
   14784             : }
   14785             : 
   14786             : /* "View.MemoryView":999
   14787             :  * 
   14788             :  * @cname('__pyx_memoryview_fromslice')
   14789             :  * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
   14790             :  *                           int ndim,
   14791             :  *                           object (*to_object_func)(char *),
   14792             :  */
   14793             : 
   14794           3 : static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) {
   14795           3 :   struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
   14796           3 :   Py_ssize_t __pyx_v_suboffset;
   14797           3 :   PyObject *__pyx_v_length = NULL;
   14798           3 :   PyObject *__pyx_r = NULL;
   14799             :   __Pyx_RefNannyDeclarations
   14800           3 :   int __pyx_t_1;
   14801           3 :   PyObject *__pyx_t_2 = NULL;
   14802           3 :   PyObject *__pyx_t_3 = NULL;
   14803           3 :   __Pyx_TypeInfo *__pyx_t_4;
   14804           3 :   Py_buffer __pyx_t_5;
   14805           3 :   Py_ssize_t *__pyx_t_6;
   14806           3 :   Py_ssize_t *__pyx_t_7;
   14807           3 :   Py_ssize_t *__pyx_t_8;
   14808           3 :   Py_ssize_t __pyx_t_9;
   14809           3 :   int __pyx_lineno = 0;
   14810           3 :   const char *__pyx_filename = NULL;
   14811           3 :   int __pyx_clineno = 0;
   14812           3 :   __Pyx_RefNannySetupContext("memoryview_fromslice", 1);
   14813             : 
   14814             :   /* "View.MemoryView":1007
   14815             :  *     cdef _memoryviewslice result
   14816             :  * 
   14817             :  *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
   14818             :  *         return None
   14819             :  * 
   14820             :  */
   14821           3 :   __pyx_t_1 = (((PyObject *)__pyx_v_memviewslice.memview) == Py_None);
   14822           3 :   if (__pyx_t_1) {
   14823             : 
   14824             :     /* "View.MemoryView":1008
   14825             :  * 
   14826             :  *     if <PyObject *> memviewslice.memview == Py_None:
   14827             :  *         return None             # <<<<<<<<<<<<<<
   14828             :  * 
   14829             :  * 
   14830             :  */
   14831           0 :     __Pyx_XDECREF(__pyx_r);
   14832           0 :     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   14833           0 :     goto __pyx_L0;
   14834             : 
   14835             :     /* "View.MemoryView":1007
   14836             :  *     cdef _memoryviewslice result
   14837             :  * 
   14838             :  *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
   14839             :  *         return None
   14840             :  * 
   14841             :  */
   14842             :   }
   14843             : 
   14844             :   /* "View.MemoryView":1013
   14845             :  * 
   14846             :  * 
   14847             :  *     result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object)             # <<<<<<<<<<<<<<
   14848             :  * 
   14849             :  *     result.from_slice = memviewslice
   14850             :  */
   14851           3 :   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error)
   14852           3 :   __Pyx_GOTREF(__pyx_t_2);
   14853           3 :   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error)
   14854           3 :   __Pyx_GOTREF(__pyx_t_3);
   14855           3 :   __Pyx_INCREF(Py_None);
   14856           3 :   __Pyx_GIVEREF(Py_None);
   14857           3 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(1, 1013, __pyx_L1_error);
   14858           3 :   __Pyx_INCREF(__pyx_int_0);
   14859           3 :   __Pyx_GIVEREF(__pyx_int_0);
   14860           3 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0)) __PYX_ERR(1, 1013, __pyx_L1_error);
   14861           3 :   __Pyx_GIVEREF(__pyx_t_2);
   14862           3 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error);
   14863           3 :   __pyx_t_2 = 0;
   14864           3 :   __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error)
   14865           3 :   __Pyx_GOTREF((PyObject *)__pyx_t_2);
   14866           3 :   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   14867           3 :   __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2);
   14868           3 :   __pyx_t_2 = 0;
   14869             : 
   14870             :   /* "View.MemoryView":1015
   14871             :  *     result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object)
   14872             :  * 
   14873             :  *     result.from_slice = memviewslice             # <<<<<<<<<<<<<<
   14874             :  *     __PYX_INC_MEMVIEW(&memviewslice, 1)
   14875             :  * 
   14876             :  */
   14877           3 :   __pyx_v_result->from_slice = __pyx_v_memviewslice;
   14878             : 
   14879             :   /* "View.MemoryView":1016
   14880             :  * 
   14881             :  *     result.from_slice = memviewslice
   14882             :  *     __PYX_INC_MEMVIEW(&memviewslice, 1)             # <<<<<<<<<<<<<<
   14883             :  * 
   14884             :  *     result.from_object = (<memoryview> memviewslice.memview)._get_base()
   14885             :  */
   14886           3 :   __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1);
   14887             : 
   14888             :   /* "View.MemoryView":1018
   14889             :  *     __PYX_INC_MEMVIEW(&memviewslice, 1)
   14890             :  * 
   14891             :  *     result.from_object = (<memoryview> memviewslice.memview)._get_base()             # <<<<<<<<<<<<<<
   14892             :  *     result.typeinfo = memviewslice.memview.typeinfo
   14893             :  * 
   14894             :  */
   14895           3 :   __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error)
   14896           3 :   __Pyx_GOTREF(__pyx_t_2);
   14897           3 :   __Pyx_GIVEREF(__pyx_t_2);
   14898           3 :   __Pyx_GOTREF(__pyx_v_result->from_object);
   14899           3 :   __Pyx_DECREF(__pyx_v_result->from_object);
   14900           3 :   __pyx_v_result->from_object = __pyx_t_2;
   14901           3 :   __pyx_t_2 = 0;
   14902             : 
   14903             :   /* "View.MemoryView":1019
   14904             :  * 
   14905             :  *     result.from_object = (<memoryview> memviewslice.memview)._get_base()
   14906             :  *     result.typeinfo = memviewslice.memview.typeinfo             # <<<<<<<<<<<<<<
   14907             :  * 
   14908             :  *     result.view = memviewslice.memview.view
   14909             :  */
   14910           3 :   __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo;
   14911           3 :   __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4;
   14912             : 
   14913             :   /* "View.MemoryView":1021
   14914             :  *     result.typeinfo = memviewslice.memview.typeinfo
   14915             :  * 
   14916             :  *     result.view = memviewslice.memview.view             # <<<<<<<<<<<<<<
   14917             :  *     result.view.buf = <void *> memviewslice.data
   14918             :  *     result.view.ndim = ndim
   14919             :  */
   14920           3 :   __pyx_t_5 = __pyx_v_memviewslice.memview->view;
   14921           3 :   __pyx_v_result->__pyx_base.view = __pyx_t_5;
   14922             : 
   14923             :   /* "View.MemoryView":1022
   14924             :  * 
   14925             :  *     result.view = memviewslice.memview.view
   14926             :  *     result.view.buf = <void *> memviewslice.data             # <<<<<<<<<<<<<<
   14927             :  *     result.view.ndim = ndim
   14928             :  *     (<__pyx_buffer *> &result.view).obj = Py_None
   14929             :  */
   14930           3 :   __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data);
   14931             : 
   14932             :   /* "View.MemoryView":1023
   14933             :  *     result.view = memviewslice.memview.view
   14934             :  *     result.view.buf = <void *> memviewslice.data
   14935             :  *     result.view.ndim = ndim             # <<<<<<<<<<<<<<
   14936             :  *     (<__pyx_buffer *> &result.view).obj = Py_None
   14937             :  *     Py_INCREF(Py_None)
   14938             :  */
   14939           3 :   __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim;
   14940             : 
   14941             :   /* "View.MemoryView":1024
   14942             :  *     result.view.buf = <void *> memviewslice.data
   14943             :  *     result.view.ndim = ndim
   14944             :  *     (<__pyx_buffer *> &result.view).obj = Py_None             # <<<<<<<<<<<<<<
   14945             :  *     Py_INCREF(Py_None)
   14946             :  * 
   14947             :  */
   14948           3 :   ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None;
   14949             : 
   14950             :   /* "View.MemoryView":1025
   14951             :  *     result.view.ndim = ndim
   14952             :  *     (<__pyx_buffer *> &result.view).obj = Py_None
   14953             :  *     Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
   14954             :  * 
   14955             :  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:
   14956             :  */
   14957           3 :   Py_INCREF(Py_None);
   14958             : 
   14959             :   /* "View.MemoryView":1027
   14960             :  *     Py_INCREF(Py_None)
   14961             :  * 
   14962             :  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
   14963             :  *         result.flags = PyBUF_RECORDS
   14964             :  *     else:
   14965             :  */
   14966           3 :   __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0);
   14967           3 :   if (__pyx_t_1) {
   14968             : 
   14969             :     /* "View.MemoryView":1028
   14970             :  * 
   14971             :  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:
   14972             :  *         result.flags = PyBUF_RECORDS             # <<<<<<<<<<<<<<
   14973             :  *     else:
   14974             :  *         result.flags = PyBUF_RECORDS_RO
   14975             :  */
   14976           3 :     __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS;
   14977             : 
   14978             :     /* "View.MemoryView":1027
   14979             :  *     Py_INCREF(Py_None)
   14980             :  * 
   14981             :  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
   14982             :  *         result.flags = PyBUF_RECORDS
   14983             :  *     else:
   14984             :  */
   14985           3 :     goto __pyx_L4;
   14986             :   }
   14987             : 
   14988             :   /* "View.MemoryView":1030
   14989             :  *         result.flags = PyBUF_RECORDS
   14990             :  *     else:
   14991             :  *         result.flags = PyBUF_RECORDS_RO             # <<<<<<<<<<<<<<
   14992             :  * 
   14993             :  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
   14994             :  */
   14995             :   /*else*/ {
   14996           0 :     __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS_RO;
   14997             :   }
   14998           3 :   __pyx_L4:;
   14999             : 
   15000             :   /* "View.MemoryView":1032
   15001             :  *         result.flags = PyBUF_RECORDS_RO
   15002             :  * 
   15003             :  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape             # <<<<<<<<<<<<<<
   15004             :  *     result.view.strides = <Py_ssize_t *> result.from_slice.strides
   15005             :  * 
   15006             :  */
   15007           3 :   __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape);
   15008             : 
   15009             :   /* "View.MemoryView":1033
   15010             :  * 
   15011             :  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
   15012             :  *     result.view.strides = <Py_ssize_t *> result.from_slice.strides             # <<<<<<<<<<<<<<
   15013             :  * 
   15014             :  * 
   15015             :  */
   15016           3 :   __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides);
   15017             : 
   15018             :   /* "View.MemoryView":1036
   15019             :  * 
   15020             :  * 
   15021             :  *     result.view.suboffsets = NULL             # <<<<<<<<<<<<<<
   15022             :  *     for suboffset in result.from_slice.suboffsets[:ndim]:
   15023             :  *         if suboffset >= 0:
   15024             :  */
   15025           3 :   __pyx_v_result->__pyx_base.view.suboffsets = NULL;
   15026             : 
   15027             :   /* "View.MemoryView":1037
   15028             :  * 
   15029             :  *     result.view.suboffsets = NULL
   15030             :  *     for suboffset in result.from_slice.suboffsets[:ndim]:             # <<<<<<<<<<<<<<
   15031             :  *         if suboffset >= 0:
   15032             :  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
   15033             :  */
   15034           3 :   __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim);
   15035          10 :   for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
   15036           7 :     __pyx_t_6 = __pyx_t_8;
   15037           7 :     __pyx_v_suboffset = (__pyx_t_6[0]);
   15038             : 
   15039             :     /* "View.MemoryView":1038
   15040             :  *     result.view.suboffsets = NULL
   15041             :  *     for suboffset in result.from_slice.suboffsets[:ndim]:
   15042             :  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
   15043             :  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
   15044             :  *             break
   15045             :  */
   15046           7 :     __pyx_t_1 = (__pyx_v_suboffset >= 0);
   15047           7 :     if (__pyx_t_1) {
   15048             : 
   15049             :       /* "View.MemoryView":1039
   15050             :  *     for suboffset in result.from_slice.suboffsets[:ndim]:
   15051             :  *         if suboffset >= 0:
   15052             :  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets             # <<<<<<<<<<<<<<
   15053             :  *             break
   15054             :  * 
   15055             :  */
   15056           0 :       __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets);
   15057             : 
   15058             :       /* "View.MemoryView":1040
   15059             :  *         if suboffset >= 0:
   15060             :  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
   15061             :  *             break             # <<<<<<<<<<<<<<
   15062             :  * 
   15063             :  *     result.view.len = result.view.itemsize
   15064             :  */
   15065           0 :       goto __pyx_L6_break;
   15066             : 
   15067             :       /* "View.MemoryView":1038
   15068             :  *     result.view.suboffsets = NULL
   15069             :  *     for suboffset in result.from_slice.suboffsets[:ndim]:
   15070             :  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
   15071             :  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
   15072             :  *             break
   15073             :  */
   15074             :     }
   15075             :   }
   15076           3 :   __pyx_L6_break:;
   15077             : 
   15078             :   /* "View.MemoryView":1042
   15079             :  *             break
   15080             :  * 
   15081             :  *     result.view.len = result.view.itemsize             # <<<<<<<<<<<<<<
   15082             :  *     for length in result.view.shape[:ndim]:
   15083             :  *         result.view.len *= length
   15084             :  */
   15085           3 :   __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize;
   15086           3 :   __pyx_v_result->__pyx_base.view.len = __pyx_t_9;
   15087             : 
   15088             :   /* "View.MemoryView":1043
   15089             :  * 
   15090             :  *     result.view.len = result.view.itemsize
   15091             :  *     for length in result.view.shape[:ndim]:             # <<<<<<<<<<<<<<
   15092             :  *         result.view.len *= length
   15093             :  * 
   15094             :  */
   15095           3 :   __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim);
   15096          10 :   for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
   15097           7 :     __pyx_t_6 = __pyx_t_8;
   15098           7 :     __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error)
   15099           7 :     __Pyx_GOTREF(__pyx_t_2);
   15100           7 :     __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2);
   15101           7 :     __pyx_t_2 = 0;
   15102             : 
   15103             :     /* "View.MemoryView":1044
   15104             :  *     result.view.len = result.view.itemsize
   15105             :  *     for length in result.view.shape[:ndim]:
   15106             :  *         result.view.len *= length             # <<<<<<<<<<<<<<
   15107             :  * 
   15108             :  *     result.to_object_func = to_object_func
   15109             :  */
   15110           7 :     __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error)
   15111           7 :     __Pyx_GOTREF(__pyx_t_2);
   15112           7 :     __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error)
   15113           7 :     __Pyx_GOTREF(__pyx_t_3);
   15114           7 :     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   15115           7 :     __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error)
   15116           7 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   15117           7 :     __pyx_v_result->__pyx_base.view.len = __pyx_t_9;
   15118             :   }
   15119             : 
   15120             :   /* "View.MemoryView":1046
   15121             :  *         result.view.len *= length
   15122             :  * 
   15123             :  *     result.to_object_func = to_object_func             # <<<<<<<<<<<<<<
   15124             :  *     result.to_dtype_func = to_dtype_func
   15125             :  * 
   15126             :  */
   15127           3 :   __pyx_v_result->to_object_func = __pyx_v_to_object_func;
   15128             : 
   15129             :   /* "View.MemoryView":1047
   15130             :  * 
   15131             :  *     result.to_object_func = to_object_func
   15132             :  *     result.to_dtype_func = to_dtype_func             # <<<<<<<<<<<<<<
   15133             :  * 
   15134             :  *     return result
   15135             :  */
   15136           3 :   __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func;
   15137             : 
   15138             :   /* "View.MemoryView":1049
   15139             :  *     result.to_dtype_func = to_dtype_func
   15140             :  * 
   15141             :  *     return result             # <<<<<<<<<<<<<<
   15142             :  * 
   15143             :  * @cname('__pyx_memoryview_get_slice_from_memoryview')
   15144             :  */
   15145           3 :   __Pyx_XDECREF(__pyx_r);
   15146           3 :   __Pyx_INCREF((PyObject *)__pyx_v_result);
   15147           3 :   __pyx_r = ((PyObject *)__pyx_v_result);
   15148           3 :   goto __pyx_L0;
   15149             : 
   15150             :   /* "View.MemoryView":999
   15151             :  * 
   15152             :  * @cname('__pyx_memoryview_fromslice')
   15153             :  * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
   15154             :  *                           int ndim,
   15155             :  *                           object (*to_object_func)(char *),
   15156             :  */
   15157             : 
   15158             :   /* function exit code */
   15159           0 :   __pyx_L1_error:;
   15160           0 :   __Pyx_XDECREF(__pyx_t_2);
   15161           0 :   __Pyx_XDECREF(__pyx_t_3);
   15162           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   15163           0 :   __pyx_r = 0;
   15164           3 :   __pyx_L0:;
   15165           3 :   __Pyx_XDECREF((PyObject *)__pyx_v_result);
   15166           3 :   __Pyx_XDECREF(__pyx_v_length);
   15167           3 :   __Pyx_XGIVEREF(__pyx_r);
   15168           3 :   __Pyx_RefNannyFinishContext();
   15169           3 :   return __pyx_r;
   15170             : }
   15171             : 
   15172             : /* "View.MemoryView":1052
   15173             :  * 
   15174             :  * @cname('__pyx_memoryview_get_slice_from_memoryview')
   15175             :  * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
   15176             :  *                                                    __Pyx_memviewslice *mslice) except NULL:
   15177             :  *     cdef _memoryviewslice obj
   15178             :  */
   15179             : 
   15180           0 : static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) {
   15181           0 :   struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0;
   15182           0 :   __Pyx_memviewslice *__pyx_r;
   15183             :   __Pyx_RefNannyDeclarations
   15184           0 :   int __pyx_t_1;
   15185           0 :   PyObject *__pyx_t_2 = NULL;
   15186           0 :   int __pyx_lineno = 0;
   15187           0 :   const char *__pyx_filename = NULL;
   15188           0 :   int __pyx_clineno = 0;
   15189           0 :   __Pyx_RefNannySetupContext("get_slice_from_memview", 1);
   15190             : 
   15191             :   /* "View.MemoryView":1055
   15192             :  *                                                    __Pyx_memviewslice *mslice) except NULL:
   15193             :  *     cdef _memoryviewslice obj
   15194             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   15195             :  *         obj = memview
   15196             :  *         return &obj.from_slice
   15197             :  */
   15198           0 :   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
   15199           0 :   if (__pyx_t_1) {
   15200             : 
   15201             :     /* "View.MemoryView":1056
   15202             :  *     cdef _memoryviewslice obj
   15203             :  *     if isinstance(memview, _memoryviewslice):
   15204             :  *         obj = memview             # <<<<<<<<<<<<<<
   15205             :  *         return &obj.from_slice
   15206             :  *     else:
   15207             :  */
   15208           0 :     if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error)
   15209           0 :     __pyx_t_2 = ((PyObject *)__pyx_v_memview);
   15210           0 :     __Pyx_INCREF(__pyx_t_2);
   15211           0 :     __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2);
   15212           0 :     __pyx_t_2 = 0;
   15213             : 
   15214             :     /* "View.MemoryView":1057
   15215             :  *     if isinstance(memview, _memoryviewslice):
   15216             :  *         obj = memview
   15217             :  *         return &obj.from_slice             # <<<<<<<<<<<<<<
   15218             :  *     else:
   15219             :  *         slice_copy(memview, mslice)
   15220             :  */
   15221           0 :     __pyx_r = (&__pyx_v_obj->from_slice);
   15222           0 :     goto __pyx_L0;
   15223             : 
   15224             :     /* "View.MemoryView":1055
   15225             :  *                                                    __Pyx_memviewslice *mslice) except NULL:
   15226             :  *     cdef _memoryviewslice obj
   15227             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   15228             :  *         obj = memview
   15229             :  *         return &obj.from_slice
   15230             :  */
   15231             :   }
   15232             : 
   15233             :   /* "View.MemoryView":1059
   15234             :  *         return &obj.from_slice
   15235             :  *     else:
   15236             :  *         slice_copy(memview, mslice)             # <<<<<<<<<<<<<<
   15237             :  *         return mslice
   15238             :  * 
   15239             :  */
   15240             :   /*else*/ {
   15241           0 :     __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice);
   15242             : 
   15243             :     /* "View.MemoryView":1060
   15244             :  *     else:
   15245             :  *         slice_copy(memview, mslice)
   15246             :  *         return mslice             # <<<<<<<<<<<<<<
   15247             :  * 
   15248             :  * @cname('__pyx_memoryview_slice_copy')
   15249             :  */
   15250           0 :     __pyx_r = __pyx_v_mslice;
   15251           0 :     goto __pyx_L0;
   15252             :   }
   15253             : 
   15254             :   /* "View.MemoryView":1052
   15255             :  * 
   15256             :  * @cname('__pyx_memoryview_get_slice_from_memoryview')
   15257             :  * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
   15258             :  *                                                    __Pyx_memviewslice *mslice) except NULL:
   15259             :  *     cdef _memoryviewslice obj
   15260             :  */
   15261             : 
   15262             :   /* function exit code */
   15263           0 :   __pyx_L1_error:;
   15264           0 :   __Pyx_XDECREF(__pyx_t_2);
   15265           0 :   __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename);
   15266           0 :   __pyx_r = NULL;
   15267           0 :   __pyx_L0:;
   15268           0 :   __Pyx_XDECREF((PyObject *)__pyx_v_obj);
   15269           0 :   __Pyx_RefNannyFinishContext();
   15270           0 :   return __pyx_r;
   15271             : }
   15272             : 
   15273             : /* "View.MemoryView":1063
   15274             :  * 
   15275             :  * @cname('__pyx_memoryview_slice_copy')
   15276             :  * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst) noexcept:             # <<<<<<<<<<<<<<
   15277             :  *     cdef int dim
   15278             :  *     cdef (Py_ssize_t*) shape, strides, suboffsets
   15279             :  */
   15280             : 
   15281           0 : static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) {
   15282           0 :   int __pyx_v_dim;
   15283           0 :   Py_ssize_t *__pyx_v_shape;
   15284           0 :   Py_ssize_t *__pyx_v_strides;
   15285           0 :   Py_ssize_t *__pyx_v_suboffsets;
   15286           0 :   Py_ssize_t *__pyx_t_1;
   15287           0 :   int __pyx_t_2;
   15288           0 :   int __pyx_t_3;
   15289           0 :   int __pyx_t_4;
   15290           0 :   Py_ssize_t __pyx_t_5;
   15291           0 :   int __pyx_t_6;
   15292             : 
   15293             :   /* "View.MemoryView":1067
   15294             :  *     cdef (Py_ssize_t*) shape, strides, suboffsets
   15295             :  * 
   15296             :  *     shape = memview.view.shape             # <<<<<<<<<<<<<<
   15297             :  *     strides = memview.view.strides
   15298             :  *     suboffsets = memview.view.suboffsets
   15299             :  */
   15300           0 :   __pyx_t_1 = __pyx_v_memview->view.shape;
   15301           0 :   __pyx_v_shape = __pyx_t_1;
   15302             : 
   15303             :   /* "View.MemoryView":1068
   15304             :  * 
   15305             :  *     shape = memview.view.shape
   15306             :  *     strides = memview.view.strides             # <<<<<<<<<<<<<<
   15307             :  *     suboffsets = memview.view.suboffsets
   15308             :  * 
   15309             :  */
   15310           0 :   __pyx_t_1 = __pyx_v_memview->view.strides;
   15311           0 :   __pyx_v_strides = __pyx_t_1;
   15312             : 
   15313             :   /* "View.MemoryView":1069
   15314             :  *     shape = memview.view.shape
   15315             :  *     strides = memview.view.strides
   15316             :  *     suboffsets = memview.view.suboffsets             # <<<<<<<<<<<<<<
   15317             :  * 
   15318             :  *     dst.memview = <__pyx_memoryview *> memview
   15319             :  */
   15320           0 :   __pyx_t_1 = __pyx_v_memview->view.suboffsets;
   15321           0 :   __pyx_v_suboffsets = __pyx_t_1;
   15322             : 
   15323             :   /* "View.MemoryView":1071
   15324             :  *     suboffsets = memview.view.suboffsets
   15325             :  * 
   15326             :  *     dst.memview = <__pyx_memoryview *> memview             # <<<<<<<<<<<<<<
   15327             :  *     dst.data = <char *> memview.view.buf
   15328             :  * 
   15329             :  */
   15330           0 :   __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview);
   15331             : 
   15332             :   /* "View.MemoryView":1072
   15333             :  * 
   15334             :  *     dst.memview = <__pyx_memoryview *> memview
   15335             :  *     dst.data = <char *> memview.view.buf             # <<<<<<<<<<<<<<
   15336             :  * 
   15337             :  *     for dim in range(memview.view.ndim):
   15338             :  */
   15339           0 :   __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf);
   15340             : 
   15341             :   /* "View.MemoryView":1074
   15342             :  *     dst.data = <char *> memview.view.buf
   15343             :  * 
   15344             :  *     for dim in range(memview.view.ndim):             # <<<<<<<<<<<<<<
   15345             :  *         dst.shape[dim] = shape[dim]
   15346             :  *         dst.strides[dim] = strides[dim]
   15347             :  */
   15348           0 :   __pyx_t_2 = __pyx_v_memview->view.ndim;
   15349           0 :   __pyx_t_3 = __pyx_t_2;
   15350           0 :   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   15351           0 :     __pyx_v_dim = __pyx_t_4;
   15352             : 
   15353             :     /* "View.MemoryView":1075
   15354             :  * 
   15355             :  *     for dim in range(memview.view.ndim):
   15356             :  *         dst.shape[dim] = shape[dim]             # <<<<<<<<<<<<<<
   15357             :  *         dst.strides[dim] = strides[dim]
   15358             :  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
   15359             :  */
   15360           0 :     (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]);
   15361             : 
   15362             :     /* "View.MemoryView":1076
   15363             :  *     for dim in range(memview.view.ndim):
   15364             :  *         dst.shape[dim] = shape[dim]
   15365             :  *         dst.strides[dim] = strides[dim]             # <<<<<<<<<<<<<<
   15366             :  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
   15367             :  * 
   15368             :  */
   15369           0 :     (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]);
   15370             : 
   15371             :     /* "View.MemoryView":1077
   15372             :  *         dst.shape[dim] = shape[dim]
   15373             :  *         dst.strides[dim] = strides[dim]
   15374             :  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1             # <<<<<<<<<<<<<<
   15375             :  * 
   15376             :  * @cname('__pyx_memoryview_copy_object')
   15377             :  */
   15378           0 :     __pyx_t_6 = (__pyx_v_suboffsets != 0);
   15379           0 :     if (__pyx_t_6) {
   15380           0 :       __pyx_t_5 = (__pyx_v_suboffsets[__pyx_v_dim]);
   15381             :     } else {
   15382             :       __pyx_t_5 = -1L;
   15383             :     }
   15384           0 :     (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5;
   15385             :   }
   15386             : 
   15387             :   /* "View.MemoryView":1063
   15388             :  * 
   15389             :  * @cname('__pyx_memoryview_slice_copy')
   15390             :  * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst) noexcept:             # <<<<<<<<<<<<<<
   15391             :  *     cdef int dim
   15392             :  *     cdef (Py_ssize_t*) shape, strides, suboffsets
   15393             :  */
   15394             : 
   15395             :   /* function exit code */
   15396           0 : }
   15397             : 
   15398             : /* "View.MemoryView":1080
   15399             :  * 
   15400             :  * @cname('__pyx_memoryview_copy_object')
   15401             :  * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
   15402             :  *     "Create a new memoryview object"
   15403             :  *     cdef __Pyx_memviewslice memviewslice
   15404             :  */
   15405             : 
   15406           0 : static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) {
   15407           0 :   __Pyx_memviewslice __pyx_v_memviewslice;
   15408           0 :   PyObject *__pyx_r = NULL;
   15409             :   __Pyx_RefNannyDeclarations
   15410           0 :   PyObject *__pyx_t_1 = NULL;
   15411           0 :   int __pyx_lineno = 0;
   15412           0 :   const char *__pyx_filename = NULL;
   15413           0 :   int __pyx_clineno = 0;
   15414           0 :   __Pyx_RefNannySetupContext("memoryview_copy", 1);
   15415             : 
   15416             :   /* "View.MemoryView":1083
   15417             :  *     "Create a new memoryview object"
   15418             :  *     cdef __Pyx_memviewslice memviewslice
   15419             :  *     slice_copy(memview, &memviewslice)             # <<<<<<<<<<<<<<
   15420             :  *     return memoryview_copy_from_slice(memview, &memviewslice)
   15421             :  * 
   15422             :  */
   15423           0 :   __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice));
   15424             : 
   15425             :   /* "View.MemoryView":1084
   15426             :  *     cdef __Pyx_memviewslice memviewslice
   15427             :  *     slice_copy(memview, &memviewslice)
   15428             :  *     return memoryview_copy_from_slice(memview, &memviewslice)             # <<<<<<<<<<<<<<
   15429             :  * 
   15430             :  * @cname('__pyx_memoryview_copy_object_from_slice')
   15431             :  */
   15432           0 :   __Pyx_XDECREF(__pyx_r);
   15433           0 :   __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error)
   15434           0 :   __Pyx_GOTREF(__pyx_t_1);
   15435           0 :   __pyx_r = __pyx_t_1;
   15436           0 :   __pyx_t_1 = 0;
   15437           0 :   goto __pyx_L0;
   15438             : 
   15439             :   /* "View.MemoryView":1080
   15440             :  * 
   15441             :  * @cname('__pyx_memoryview_copy_object')
   15442             :  * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
   15443             :  *     "Create a new memoryview object"
   15444             :  *     cdef __Pyx_memviewslice memviewslice
   15445             :  */
   15446             : 
   15447             :   /* function exit code */
   15448           0 :   __pyx_L1_error:;
   15449           0 :   __Pyx_XDECREF(__pyx_t_1);
   15450           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
   15451           0 :   __pyx_r = 0;
   15452           0 :   __pyx_L0:;
   15453           0 :   __Pyx_XGIVEREF(__pyx_r);
   15454           0 :   __Pyx_RefNannyFinishContext();
   15455           0 :   return __pyx_r;
   15456             : }
   15457             : 
   15458             : /* "View.MemoryView":1087
   15459             :  * 
   15460             :  * @cname('__pyx_memoryview_copy_object_from_slice')
   15461             :  * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
   15462             :  *     """
   15463             :  *     Create a new memoryview object from a given memoryview object and slice.
   15464             :  */
   15465             : 
   15466           0 : static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) {
   15467           0 :   PyObject *(*__pyx_v_to_object_func)(char *);
   15468           0 :   int (*__pyx_v_to_dtype_func)(char *, PyObject *);
   15469           0 :   PyObject *__pyx_r = NULL;
   15470             :   __Pyx_RefNannyDeclarations
   15471           0 :   int __pyx_t_1;
   15472           0 :   PyObject *(*__pyx_t_2)(char *);
   15473           0 :   int (*__pyx_t_3)(char *, PyObject *);
   15474           0 :   PyObject *__pyx_t_4 = NULL;
   15475           0 :   int __pyx_lineno = 0;
   15476           0 :   const char *__pyx_filename = NULL;
   15477           0 :   int __pyx_clineno = 0;
   15478           0 :   __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 1);
   15479             : 
   15480             :   /* "View.MemoryView":1094
   15481             :  *     cdef int (*to_dtype_func)(char *, object) except 0
   15482             :  * 
   15483             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   15484             :  *         to_object_func = (<_memoryviewslice> memview).to_object_func
   15485             :  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
   15486             :  */
   15487           0 :   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); 
   15488           0 :   if (__pyx_t_1) {
   15489             : 
   15490             :     /* "View.MemoryView":1095
   15491             :  * 
   15492             :  *     if isinstance(memview, _memoryviewslice):
   15493             :  *         to_object_func = (<_memoryviewslice> memview).to_object_func             # <<<<<<<<<<<<<<
   15494             :  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
   15495             :  *     else:
   15496             :  */
   15497           0 :     __pyx_t_2 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func;
   15498           0 :     __pyx_v_to_object_func = __pyx_t_2;
   15499             : 
   15500             :     /* "View.MemoryView":1096
   15501             :  *     if isinstance(memview, _memoryviewslice):
   15502             :  *         to_object_func = (<_memoryviewslice> memview).to_object_func
   15503             :  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func             # <<<<<<<<<<<<<<
   15504             :  *     else:
   15505             :  *         to_object_func = NULL
   15506             :  */
   15507           0 :     __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func;
   15508           0 :     __pyx_v_to_dtype_func = __pyx_t_3;
   15509             : 
   15510             :     /* "View.MemoryView":1094
   15511             :  *     cdef int (*to_dtype_func)(char *, object) except 0
   15512             :  * 
   15513             :  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
   15514             :  *         to_object_func = (<_memoryviewslice> memview).to_object_func
   15515             :  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
   15516             :  */
   15517           0 :     goto __pyx_L3;
   15518             :   }
   15519             : 
   15520             :   /* "View.MemoryView":1098
   15521             :  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
   15522             :  *     else:
   15523             :  *         to_object_func = NULL             # <<<<<<<<<<<<<<
   15524             :  *         to_dtype_func = NULL
   15525             :  * 
   15526             :  */
   15527             :   /*else*/ {
   15528             :     __pyx_v_to_object_func = NULL;
   15529             : 
   15530             :     /* "View.MemoryView":1099
   15531             :  *     else:
   15532             :  *         to_object_func = NULL
   15533             :  *         to_dtype_func = NULL             # <<<<<<<<<<<<<<
   15534             :  * 
   15535             :  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
   15536             :  */
   15537             :     __pyx_v_to_dtype_func = NULL;
   15538             :   }
   15539           0 :   __pyx_L3:;
   15540             : 
   15541             :   /* "View.MemoryView":1101
   15542             :  *         to_dtype_func = NULL
   15543             :  * 
   15544             :  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,             # <<<<<<<<<<<<<<
   15545             :  *                                 to_object_func, to_dtype_func,
   15546             :  *                                 memview.dtype_is_object)
   15547             :  */
   15548           0 :   __Pyx_XDECREF(__pyx_r);
   15549             : 
   15550             :   /* "View.MemoryView":1103
   15551             :  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
   15552             :  *                                 to_object_func, to_dtype_func,
   15553             :  *                                 memview.dtype_is_object)             # <<<<<<<<<<<<<<
   15554             :  * 
   15555             :  * 
   15556             :  */
   15557           0 :   __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1101, __pyx_L1_error)
   15558           0 :   __Pyx_GOTREF(__pyx_t_4);
   15559           0 :   __pyx_r = __pyx_t_4;
   15560           0 :   __pyx_t_4 = 0;
   15561           0 :   goto __pyx_L0;
   15562             : 
   15563             :   /* "View.MemoryView":1087
   15564             :  * 
   15565             :  * @cname('__pyx_memoryview_copy_object_from_slice')
   15566             :  * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
   15567             :  *     """
   15568             :  *     Create a new memoryview object from a given memoryview object and slice.
   15569             :  */
   15570             : 
   15571             :   /* function exit code */
   15572           0 :   __pyx_L1_error:;
   15573           0 :   __Pyx_XDECREF(__pyx_t_4);
   15574           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
   15575           0 :   __pyx_r = 0;
   15576           0 :   __pyx_L0:;
   15577           0 :   __Pyx_XGIVEREF(__pyx_r);
   15578           0 :   __Pyx_RefNannyFinishContext();
   15579           0 :   return __pyx_r;
   15580             : }
   15581             : 
   15582             : /* "View.MemoryView":1109
   15583             :  * 
   15584             :  * 
   15585             :  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
   15586             :  *     return -arg if arg < 0 else arg
   15587             :  * 
   15588             :  */
   15589             : 
   15590           0 : static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) {
   15591           0 :   Py_ssize_t __pyx_r;
   15592           0 :   Py_ssize_t __pyx_t_1;
   15593           0 :   int __pyx_t_2;
   15594             : 
   15595             :   /* "View.MemoryView":1110
   15596             :  * 
   15597             :  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil:
   15598             :  *     return -arg if arg < 0 else arg             # <<<<<<<<<<<<<<
   15599             :  * 
   15600             :  * @cname('__pyx_get_best_slice_order')
   15601             :  */
   15602           0 :   __pyx_t_2 = (__pyx_v_arg < 0);
   15603           0 :   if (__pyx_t_2) {
   15604             :     __pyx_t_1 = (-__pyx_v_arg);
   15605             :   } else {
   15606             :     __pyx_t_1 = __pyx_v_arg;
   15607             :   }
   15608           0 :   __pyx_r = __pyx_t_1;
   15609           0 :   goto __pyx_L0;
   15610             : 
   15611             :   /* "View.MemoryView":1109
   15612             :  * 
   15613             :  * 
   15614             :  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
   15615             :  *     return -arg if arg < 0 else arg
   15616             :  * 
   15617             :  */
   15618             : 
   15619             :   /* function exit code */
   15620           0 :   __pyx_L0:;
   15621           0 :   return __pyx_r;
   15622             : }
   15623             : 
   15624             : /* "View.MemoryView":1113
   15625             :  * 
   15626             :  * @cname('__pyx_get_best_slice_order')
   15627             :  * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) noexcept nogil:             # <<<<<<<<<<<<<<
   15628             :  *     """
   15629             :  *     Figure out the best memory access order for a given slice.
   15630             :  */
   15631             : 
   15632           0 : static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) {
   15633           0 :   int __pyx_v_i;
   15634           0 :   Py_ssize_t __pyx_v_c_stride;
   15635           0 :   Py_ssize_t __pyx_v_f_stride;
   15636           0 :   char __pyx_r;
   15637           0 :   int __pyx_t_1;
   15638           0 :   int __pyx_t_2;
   15639           0 :   int __pyx_t_3;
   15640           0 :   int __pyx_t_4;
   15641             : 
   15642             :   /* "View.MemoryView":1118
   15643             :  *     """
   15644             :  *     cdef int i
   15645             :  *     cdef Py_ssize_t c_stride = 0             # <<<<<<<<<<<<<<
   15646             :  *     cdef Py_ssize_t f_stride = 0
   15647             :  * 
   15648             :  */
   15649           0 :   __pyx_v_c_stride = 0;
   15650             : 
   15651             :   /* "View.MemoryView":1119
   15652             :  *     cdef int i
   15653             :  *     cdef Py_ssize_t c_stride = 0
   15654             :  *     cdef Py_ssize_t f_stride = 0             # <<<<<<<<<<<<<<
   15655             :  * 
   15656             :  *     for i in range(ndim - 1, -1, -1):
   15657             :  */
   15658           0 :   __pyx_v_f_stride = 0;
   15659             : 
   15660             :   /* "View.MemoryView":1121
   15661             :  *     cdef Py_ssize_t f_stride = 0
   15662             :  * 
   15663             :  *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
   15664             :  *         if mslice.shape[i] > 1:
   15665             :  *             c_stride = mslice.strides[i]
   15666             :  */
   15667           0 :   for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) {
   15668           0 :     __pyx_v_i = __pyx_t_1;
   15669             : 
   15670             :     /* "View.MemoryView":1122
   15671             :  * 
   15672             :  *     for i in range(ndim - 1, -1, -1):
   15673             :  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
   15674             :  *             c_stride = mslice.strides[i]
   15675             :  *             break
   15676             :  */
   15677           0 :     __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1);
   15678           0 :     if (__pyx_t_2) {
   15679             : 
   15680             :       /* "View.MemoryView":1123
   15681             :  *     for i in range(ndim - 1, -1, -1):
   15682             :  *         if mslice.shape[i] > 1:
   15683             :  *             c_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
   15684             :  *             break
   15685             :  * 
   15686             :  */
   15687           0 :       __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]);
   15688             : 
   15689             :       /* "View.MemoryView":1124
   15690             :  *         if mslice.shape[i] > 1:
   15691             :  *             c_stride = mslice.strides[i]
   15692             :  *             break             # <<<<<<<<<<<<<<
   15693             :  * 
   15694             :  *     for i in range(ndim):
   15695             :  */
   15696           0 :       goto __pyx_L4_break;
   15697             : 
   15698             :       /* "View.MemoryView":1122
   15699             :  * 
   15700             :  *     for i in range(ndim - 1, -1, -1):
   15701             :  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
   15702             :  *             c_stride = mslice.strides[i]
   15703             :  *             break
   15704             :  */
   15705             :     }
   15706             :   }
   15707           0 :   __pyx_L4_break:;
   15708             : 
   15709             :   /* "View.MemoryView":1126
   15710             :  *             break
   15711             :  * 
   15712             :  *     for i in range(ndim):             # <<<<<<<<<<<<<<
   15713             :  *         if mslice.shape[i] > 1:
   15714             :  *             f_stride = mslice.strides[i]
   15715             :  */
   15716           0 :   __pyx_t_1 = __pyx_v_ndim;
   15717           0 :   __pyx_t_3 = __pyx_t_1;
   15718           0 :   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   15719           0 :     __pyx_v_i = __pyx_t_4;
   15720             : 
   15721             :     /* "View.MemoryView":1127
   15722             :  * 
   15723             :  *     for i in range(ndim):
   15724             :  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
   15725             :  *             f_stride = mslice.strides[i]
   15726             :  *             break
   15727             :  */
   15728           0 :     __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1);
   15729           0 :     if (__pyx_t_2) {
   15730             : 
   15731             :       /* "View.MemoryView":1128
   15732             :  *     for i in range(ndim):
   15733             :  *         if mslice.shape[i] > 1:
   15734             :  *             f_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
   15735             :  *             break
   15736             :  * 
   15737             :  */
   15738           0 :       __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]);
   15739             : 
   15740             :       /* "View.MemoryView":1129
   15741             :  *         if mslice.shape[i] > 1:
   15742             :  *             f_stride = mslice.strides[i]
   15743             :  *             break             # <<<<<<<<<<<<<<
   15744             :  * 
   15745             :  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
   15746             :  */
   15747           0 :       goto __pyx_L7_break;
   15748             : 
   15749             :       /* "View.MemoryView":1127
   15750             :  * 
   15751             :  *     for i in range(ndim):
   15752             :  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
   15753             :  *             f_stride = mslice.strides[i]
   15754             :  *             break
   15755             :  */
   15756             :     }
   15757             :   }
   15758           0 :   __pyx_L7_break:;
   15759             : 
   15760             :   /* "View.MemoryView":1131
   15761             :  *             break
   15762             :  * 
   15763             :  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
   15764             :  *         return 'C'
   15765             :  *     else:
   15766             :  */
   15767           0 :   __pyx_t_2 = (abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride));
   15768           0 :   if (__pyx_t_2) {
   15769             : 
   15770             :     /* "View.MemoryView":1132
   15771             :  * 
   15772             :  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
   15773             :  *         return 'C'             # <<<<<<<<<<<<<<
   15774             :  *     else:
   15775             :  *         return 'F'
   15776             :  */
   15777           0 :     __pyx_r = 'C';
   15778           0 :     goto __pyx_L0;
   15779             : 
   15780             :     /* "View.MemoryView":1131
   15781             :  *             break
   15782             :  * 
   15783             :  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
   15784             :  *         return 'C'
   15785             :  *     else:
   15786             :  */
   15787             :   }
   15788             : 
   15789             :   /* "View.MemoryView":1134
   15790             :  *         return 'C'
   15791             :  *     else:
   15792             :  *         return 'F'             # <<<<<<<<<<<<<<
   15793             :  * 
   15794             :  * @cython.cdivision(True)
   15795             :  */
   15796             :   /*else*/ {
   15797           0 :     __pyx_r = 'F';
   15798           0 :     goto __pyx_L0;
   15799             :   }
   15800             : 
   15801             :   /* "View.MemoryView":1113
   15802             :  * 
   15803             :  * @cname('__pyx_get_best_slice_order')
   15804             :  * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) noexcept nogil:             # <<<<<<<<<<<<<<
   15805             :  *     """
   15806             :  *     Figure out the best memory access order for a given slice.
   15807             :  */
   15808             : 
   15809             :   /* function exit code */
   15810           0 :   __pyx_L0:;
   15811           0 :   return __pyx_r;
   15812             : }
   15813             : 
   15814             : /* "View.MemoryView":1137
   15815             :  * 
   15816             :  * @cython.cdivision(True)
   15817             :  * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
   15818             :  *                                    char *dst_data, Py_ssize_t *dst_strides,
   15819             :  *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
   15820             :  */
   15821             : 
   15822           0 : static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) {
   15823           0 :   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
   15824           0 :   CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent;
   15825           0 :   Py_ssize_t __pyx_v_dst_extent;
   15826           0 :   Py_ssize_t __pyx_v_src_stride;
   15827           0 :   Py_ssize_t __pyx_v_dst_stride;
   15828           0 :   int __pyx_t_1;
   15829           0 :   int __pyx_t_2;
   15830           0 :   Py_ssize_t __pyx_t_3;
   15831           0 :   Py_ssize_t __pyx_t_4;
   15832           0 :   Py_ssize_t __pyx_t_5;
   15833             : 
   15834             :   /* "View.MemoryView":1144
   15835             :  * 
   15836             :  *     cdef Py_ssize_t i
   15837             :  *     cdef Py_ssize_t src_extent = src_shape[0]             # <<<<<<<<<<<<<<
   15838             :  *     cdef Py_ssize_t dst_extent = dst_shape[0]
   15839             :  *     cdef Py_ssize_t src_stride = src_strides[0]
   15840             :  */
   15841           0 :   __pyx_v_src_extent = (__pyx_v_src_shape[0]);
   15842             : 
   15843             :   /* "View.MemoryView":1145
   15844             :  *     cdef Py_ssize_t i
   15845             :  *     cdef Py_ssize_t src_extent = src_shape[0]
   15846             :  *     cdef Py_ssize_t dst_extent = dst_shape[0]             # <<<<<<<<<<<<<<
   15847             :  *     cdef Py_ssize_t src_stride = src_strides[0]
   15848             :  *     cdef Py_ssize_t dst_stride = dst_strides[0]
   15849             :  */
   15850           0 :   __pyx_v_dst_extent = (__pyx_v_dst_shape[0]);
   15851             : 
   15852             :   /* "View.MemoryView":1146
   15853             :  *     cdef Py_ssize_t src_extent = src_shape[0]
   15854             :  *     cdef Py_ssize_t dst_extent = dst_shape[0]
   15855             :  *     cdef Py_ssize_t src_stride = src_strides[0]             # <<<<<<<<<<<<<<
   15856             :  *     cdef Py_ssize_t dst_stride = dst_strides[0]
   15857             :  * 
   15858             :  */
   15859           0 :   __pyx_v_src_stride = (__pyx_v_src_strides[0]);
   15860             : 
   15861             :   /* "View.MemoryView":1147
   15862             :  *     cdef Py_ssize_t dst_extent = dst_shape[0]
   15863             :  *     cdef Py_ssize_t src_stride = src_strides[0]
   15864             :  *     cdef Py_ssize_t dst_stride = dst_strides[0]             # <<<<<<<<<<<<<<
   15865             :  * 
   15866             :  *     if ndim == 1:
   15867             :  */
   15868           0 :   __pyx_v_dst_stride = (__pyx_v_dst_strides[0]);
   15869             : 
   15870             :   /* "View.MemoryView":1149
   15871             :  *     cdef Py_ssize_t dst_stride = dst_strides[0]
   15872             :  * 
   15873             :  *     if ndim == 1:             # <<<<<<<<<<<<<<
   15874             :  *         if (src_stride > 0 and dst_stride > 0 and
   15875             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15876             :  */
   15877           0 :   __pyx_t_1 = (__pyx_v_ndim == 1);
   15878           0 :   if (__pyx_t_1) {
   15879             : 
   15880             :     /* "View.MemoryView":1150
   15881             :  * 
   15882             :  *     if ndim == 1:
   15883             :  *         if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
   15884             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15885             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)
   15886             :  */
   15887           0 :     __pyx_t_2 = (__pyx_v_src_stride > 0);
   15888           0 :     if (__pyx_t_2) {
   15889           0 :     } else {
   15890           0 :       __pyx_t_1 = __pyx_t_2;
   15891           0 :       goto __pyx_L5_bool_binop_done;
   15892             :     }
   15893           0 :     __pyx_t_2 = (__pyx_v_dst_stride > 0);
   15894           0 :     if (__pyx_t_2) {
   15895           0 :     } else {
   15896           0 :       __pyx_t_1 = __pyx_t_2;
   15897           0 :       goto __pyx_L5_bool_binop_done;
   15898             :     }
   15899             : 
   15900             :     /* "View.MemoryView":1151
   15901             :  *     if ndim == 1:
   15902             :  *         if (src_stride > 0 and dst_stride > 0 and
   15903             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):             # <<<<<<<<<<<<<<
   15904             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)
   15905             :  *         else:
   15906             :  */
   15907           0 :     __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize);
   15908           0 :     if (__pyx_t_2) {
   15909           0 :       __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride));
   15910             :     }
   15911             :     __pyx_t_1 = __pyx_t_2;
   15912           0 :     __pyx_L5_bool_binop_done:;
   15913             : 
   15914             :     /* "View.MemoryView":1150
   15915             :  * 
   15916             :  *     if ndim == 1:
   15917             :  *         if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
   15918             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15919             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)
   15920             :  */
   15921           0 :     if (__pyx_t_1) {
   15922             : 
   15923             :       /* "View.MemoryView":1152
   15924             :  *         if (src_stride > 0 and dst_stride > 0 and
   15925             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15926             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)             # <<<<<<<<<<<<<<
   15927             :  *         else:
   15928             :  *             for i in range(dst_extent):
   15929             :  */
   15930           0 :       (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent)));
   15931             : 
   15932             :       /* "View.MemoryView":1150
   15933             :  * 
   15934             :  *     if ndim == 1:
   15935             :  *         if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
   15936             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15937             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)
   15938             :  */
   15939           0 :       goto __pyx_L4;
   15940             :     }
   15941             : 
   15942             :     /* "View.MemoryView":1154
   15943             :  *             memcpy(dst_data, src_data, itemsize * dst_extent)
   15944             :  *         else:
   15945             :  *             for i in range(dst_extent):             # <<<<<<<<<<<<<<
   15946             :  *                 memcpy(dst_data, src_data, itemsize)
   15947             :  *                 src_data += src_stride
   15948             :  */
   15949             :     /*else*/ {
   15950             :       __pyx_t_3 = __pyx_v_dst_extent;
   15951             :       __pyx_t_4 = __pyx_t_3;
   15952           0 :       for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
   15953           0 :         __pyx_v_i = __pyx_t_5;
   15954             : 
   15955             :         /* "View.MemoryView":1155
   15956             :  *         else:
   15957             :  *             for i in range(dst_extent):
   15958             :  *                 memcpy(dst_data, src_data, itemsize)             # <<<<<<<<<<<<<<
   15959             :  *                 src_data += src_stride
   15960             :  *                 dst_data += dst_stride
   15961             :  */
   15962           0 :         (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize));
   15963             : 
   15964             :         /* "View.MemoryView":1156
   15965             :  *             for i in range(dst_extent):
   15966             :  *                 memcpy(dst_data, src_data, itemsize)
   15967             :  *                 src_data += src_stride             # <<<<<<<<<<<<<<
   15968             :  *                 dst_data += dst_stride
   15969             :  *     else:
   15970             :  */
   15971           0 :         __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);
   15972             : 
   15973             :         /* "View.MemoryView":1157
   15974             :  *                 memcpy(dst_data, src_data, itemsize)
   15975             :  *                 src_data += src_stride
   15976             :  *                 dst_data += dst_stride             # <<<<<<<<<<<<<<
   15977             :  *     else:
   15978             :  *         for i in range(dst_extent):
   15979             :  */
   15980           0 :         __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
   15981             :       }
   15982             :     }
   15983           0 :     __pyx_L4:;
   15984             : 
   15985             :     /* "View.MemoryView":1149
   15986             :  *     cdef Py_ssize_t dst_stride = dst_strides[0]
   15987             :  * 
   15988             :  *     if ndim == 1:             # <<<<<<<<<<<<<<
   15989             :  *         if (src_stride > 0 and dst_stride > 0 and
   15990             :  *             <size_t> src_stride == itemsize == <size_t> dst_stride):
   15991             :  */
   15992           0 :     goto __pyx_L3;
   15993             :   }
   15994             : 
   15995             :   /* "View.MemoryView":1159
   15996             :  *                 dst_data += dst_stride
   15997             :  *     else:
   15998             :  *         for i in range(dst_extent):             # <<<<<<<<<<<<<<
   15999             :  *             _copy_strided_to_strided(src_data, src_strides + 1,
   16000             :  *                                      dst_data, dst_strides + 1,
   16001             :  */
   16002             :   /*else*/ {
   16003             :     __pyx_t_3 = __pyx_v_dst_extent;
   16004             :     __pyx_t_4 = __pyx_t_3;
   16005           0 :     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
   16006           0 :       __pyx_v_i = __pyx_t_5;
   16007             : 
   16008             :       /* "View.MemoryView":1160
   16009             :  *     else:
   16010             :  *         for i in range(dst_extent):
   16011             :  *             _copy_strided_to_strided(src_data, src_strides + 1,             # <<<<<<<<<<<<<<
   16012             :  *                                      dst_data, dst_strides + 1,
   16013             :  *                                      src_shape + 1, dst_shape + 1,
   16014             :  */
   16015           0 :       _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize);
   16016             : 
   16017             :       /* "View.MemoryView":1164
   16018             :  *                                      src_shape + 1, dst_shape + 1,
   16019             :  *                                      ndim - 1, itemsize)
   16020             :  *             src_data += src_stride             # <<<<<<<<<<<<<<
   16021             :  *             dst_data += dst_stride
   16022             :  * 
   16023             :  */
   16024           0 :       __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);
   16025             : 
   16026             :       /* "View.MemoryView":1165
   16027             :  *                                      ndim - 1, itemsize)
   16028             :  *             src_data += src_stride
   16029             :  *             dst_data += dst_stride             # <<<<<<<<<<<<<<
   16030             :  * 
   16031             :  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,
   16032             :  */
   16033           0 :       __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
   16034             :     }
   16035             :   }
   16036           0 :   __pyx_L3:;
   16037             : 
   16038             :   /* "View.MemoryView":1137
   16039             :  * 
   16040             :  * @cython.cdivision(True)
   16041             :  * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
   16042             :  *                                    char *dst_data, Py_ssize_t *dst_strides,
   16043             :  *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
   16044             :  */
   16045             : 
   16046             :   /* function exit code */
   16047           0 : }
   16048             : 
   16049             : /* "View.MemoryView":1167
   16050             :  *             dst_data += dst_stride
   16051             :  * 
   16052             :  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
   16053             :  *                                   __Pyx_memviewslice *dst,
   16054             :  *                                   int ndim, size_t itemsize) noexcept nogil:
   16055             :  */
   16056             : 
   16057           0 : static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) {
   16058             : 
   16059             :   /* "View.MemoryView":1170
   16060             :  *                                   __Pyx_memviewslice *dst,
   16061             :  *                                   int ndim, size_t itemsize) noexcept nogil:
   16062             :  *     _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides,             # <<<<<<<<<<<<<<
   16063             :  *                              src.shape, dst.shape, ndim, itemsize)
   16064             :  * 
   16065             :  */
   16066           0 :   _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize);
   16067             : 
   16068             :   /* "View.MemoryView":1167
   16069             :  *             dst_data += dst_stride
   16070             :  * 
   16071             :  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
   16072             :  *                                   __Pyx_memviewslice *dst,
   16073             :  *                                   int ndim, size_t itemsize) noexcept nogil:
   16074             :  */
   16075             : 
   16076             :   /* function exit code */
   16077           0 : }
   16078             : 
   16079             : /* "View.MemoryView":1174
   16080             :  * 
   16081             :  * @cname('__pyx_memoryview_slice_get_size')
   16082             :  * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil:             # <<<<<<<<<<<<<<
   16083             :  *     "Return the size of the memory occupied by the slice in number of bytes"
   16084             :  *     cdef Py_ssize_t shape, size = src.memview.view.itemsize
   16085             :  */
   16086             : 
   16087           0 : static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) {
   16088           0 :   Py_ssize_t __pyx_v_shape;
   16089           0 :   Py_ssize_t __pyx_v_size;
   16090           0 :   Py_ssize_t __pyx_r;
   16091           0 :   Py_ssize_t __pyx_t_1;
   16092           0 :   Py_ssize_t *__pyx_t_2;
   16093           0 :   Py_ssize_t *__pyx_t_3;
   16094           0 :   Py_ssize_t *__pyx_t_4;
   16095             : 
   16096             :   /* "View.MemoryView":1176
   16097             :  * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil:
   16098             :  *     "Return the size of the memory occupied by the slice in number of bytes"
   16099             :  *     cdef Py_ssize_t shape, size = src.memview.view.itemsize             # <<<<<<<<<<<<<<
   16100             :  * 
   16101             :  *     for shape in src.shape[:ndim]:
   16102             :  */
   16103           0 :   __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
   16104           0 :   __pyx_v_size = __pyx_t_1;
   16105             : 
   16106             :   /* "View.MemoryView":1178
   16107             :  *     cdef Py_ssize_t shape, size = src.memview.view.itemsize
   16108             :  * 
   16109             :  *     for shape in src.shape[:ndim]:             # <<<<<<<<<<<<<<
   16110             :  *         size *= shape
   16111             :  * 
   16112             :  */
   16113           0 :   __pyx_t_3 = (__pyx_v_src->shape + __pyx_v_ndim);
   16114           0 :   for (__pyx_t_4 = __pyx_v_src->shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
   16115           0 :     __pyx_t_2 = __pyx_t_4;
   16116           0 :     __pyx_v_shape = (__pyx_t_2[0]);
   16117             : 
   16118             :     /* "View.MemoryView":1179
   16119             :  * 
   16120             :  *     for shape in src.shape[:ndim]:
   16121             :  *         size *= shape             # <<<<<<<<<<<<<<
   16122             :  * 
   16123             :  *     return size
   16124             :  */
   16125           0 :     __pyx_v_size = (__pyx_v_size * __pyx_v_shape);
   16126             :   }
   16127             : 
   16128             :   /* "View.MemoryView":1181
   16129             :  *         size *= shape
   16130             :  * 
   16131             :  *     return size             # <<<<<<<<<<<<<<
   16132             :  * 
   16133             :  * @cname('__pyx_fill_contig_strides_array')
   16134             :  */
   16135           0 :   __pyx_r = __pyx_v_size;
   16136           0 :   goto __pyx_L0;
   16137             : 
   16138             :   /* "View.MemoryView":1174
   16139             :  * 
   16140             :  * @cname('__pyx_memoryview_slice_get_size')
   16141             :  * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil:             # <<<<<<<<<<<<<<
   16142             :  *     "Return the size of the memory occupied by the slice in number of bytes"
   16143             :  *     cdef Py_ssize_t shape, size = src.memview.view.itemsize
   16144             :  */
   16145             : 
   16146             :   /* function exit code */
   16147           0 :   __pyx_L0:;
   16148           0 :   return __pyx_r;
   16149             : }
   16150             : 
   16151             : /* "View.MemoryView":1184
   16152             :  * 
   16153             :  * @cname('__pyx_fill_contig_strides_array')
   16154             :  * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
   16155             :  *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
   16156             :  *                 int ndim, char order) noexcept nogil:
   16157             :  */
   16158             : 
   16159           0 : static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) {
   16160           0 :   int __pyx_v_idx;
   16161           0 :   Py_ssize_t __pyx_r;
   16162           0 :   int __pyx_t_1;
   16163           0 :   int __pyx_t_2;
   16164           0 :   int __pyx_t_3;
   16165           0 :   int __pyx_t_4;
   16166             : 
   16167             :   /* "View.MemoryView":1193
   16168             :  *     cdef int idx
   16169             :  * 
   16170             :  *     if order == 'F':             # <<<<<<<<<<<<<<
   16171             :  *         for idx in range(ndim):
   16172             :  *             strides[idx] = stride
   16173             :  */
   16174           0 :   __pyx_t_1 = (__pyx_v_order == 'F');
   16175           0 :   if (__pyx_t_1) {
   16176             : 
   16177             :     /* "View.MemoryView":1194
   16178             :  * 
   16179             :  *     if order == 'F':
   16180             :  *         for idx in range(ndim):             # <<<<<<<<<<<<<<
   16181             :  *             strides[idx] = stride
   16182             :  *             stride *= shape[idx]
   16183             :  */
   16184           0 :     __pyx_t_2 = __pyx_v_ndim;
   16185             :     __pyx_t_3 = __pyx_t_2;
   16186           0 :     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   16187           0 :       __pyx_v_idx = __pyx_t_4;
   16188             : 
   16189             :       /* "View.MemoryView":1195
   16190             :  *     if order == 'F':
   16191             :  *         for idx in range(ndim):
   16192             :  *             strides[idx] = stride             # <<<<<<<<<<<<<<
   16193             :  *             stride *= shape[idx]
   16194             :  *     else:
   16195             :  */
   16196           0 :       (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;
   16197             : 
   16198             :       /* "View.MemoryView":1196
   16199             :  *         for idx in range(ndim):
   16200             :  *             strides[idx] = stride
   16201             :  *             stride *= shape[idx]             # <<<<<<<<<<<<<<
   16202             :  *     else:
   16203             :  *         for idx in range(ndim - 1, -1, -1):
   16204             :  */
   16205           0 :       __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
   16206             :     }
   16207             : 
   16208             :     /* "View.MemoryView":1193
   16209             :  *     cdef int idx
   16210             :  * 
   16211             :  *     if order == 'F':             # <<<<<<<<<<<<<<
   16212             :  *         for idx in range(ndim):
   16213             :  *             strides[idx] = stride
   16214             :  */
   16215           0 :     goto __pyx_L3;
   16216             :   }
   16217             : 
   16218             :   /* "View.MemoryView":1198
   16219             :  *             stride *= shape[idx]
   16220             :  *     else:
   16221             :  *         for idx in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
   16222             :  *             strides[idx] = stride
   16223             :  *             stride *= shape[idx]
   16224             :  */
   16225             :   /*else*/ {
   16226           0 :     for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) {
   16227           0 :       __pyx_v_idx = __pyx_t_2;
   16228             : 
   16229             :       /* "View.MemoryView":1199
   16230             :  *     else:
   16231             :  *         for idx in range(ndim - 1, -1, -1):
   16232             :  *             strides[idx] = stride             # <<<<<<<<<<<<<<
   16233             :  *             stride *= shape[idx]
   16234             :  * 
   16235             :  */
   16236           0 :       (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;
   16237             : 
   16238             :       /* "View.MemoryView":1200
   16239             :  *         for idx in range(ndim - 1, -1, -1):
   16240             :  *             strides[idx] = stride
   16241             :  *             stride *= shape[idx]             # <<<<<<<<<<<<<<
   16242             :  * 
   16243             :  *     return stride
   16244             :  */
   16245           0 :       __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
   16246             :     }
   16247             :   }
   16248           0 :   __pyx_L3:;
   16249             : 
   16250             :   /* "View.MemoryView":1202
   16251             :  *             stride *= shape[idx]
   16252             :  * 
   16253             :  *     return stride             # <<<<<<<<<<<<<<
   16254             :  * 
   16255             :  * @cname('__pyx_memoryview_copy_data_to_temp')
   16256             :  */
   16257           0 :   __pyx_r = __pyx_v_stride;
   16258           0 :   goto __pyx_L0;
   16259             : 
   16260             :   /* "View.MemoryView":1184
   16261             :  * 
   16262             :  * @cname('__pyx_fill_contig_strides_array')
   16263             :  * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
   16264             :  *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
   16265             :  *                 int ndim, char order) noexcept nogil:
   16266             :  */
   16267             : 
   16268             :   /* function exit code */
   16269           0 :   __pyx_L0:;
   16270           0 :   return __pyx_r;
   16271             : }
   16272             : 
   16273             : /* "View.MemoryView":1205
   16274             :  * 
   16275             :  * @cname('__pyx_memoryview_copy_data_to_temp')
   16276             :  * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
   16277             :  *                              __Pyx_memviewslice *tmpslice,
   16278             :  *                              char order,
   16279             :  */
   16280             : 
   16281           0 : static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) {
   16282           0 :   int __pyx_v_i;
   16283           0 :   void *__pyx_v_result;
   16284           0 :   size_t __pyx_v_itemsize;
   16285           0 :   size_t __pyx_v_size;
   16286           0 :   void *__pyx_r;
   16287           0 :   Py_ssize_t __pyx_t_1;
   16288           0 :   int __pyx_t_2;
   16289           0 :   int __pyx_t_3;
   16290           0 :   struct __pyx_memoryview_obj *__pyx_t_4;
   16291           0 :   int __pyx_t_5;
   16292           0 :   int __pyx_t_6;
   16293           0 :   int __pyx_lineno = 0;
   16294           0 :   const char *__pyx_filename = NULL;
   16295           0 :   int __pyx_clineno = 0;
   16296             :   #ifdef WITH_THREAD
   16297           0 :   PyGILState_STATE __pyx_gilstate_save;
   16298             :   #endif
   16299             : 
   16300             :   /* "View.MemoryView":1216
   16301             :  *     cdef void *result
   16302             :  * 
   16303             :  *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
   16304             :  *     cdef size_t size = slice_get_size(src, ndim)
   16305             :  * 
   16306             :  */
   16307           0 :   __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
   16308           0 :   __pyx_v_itemsize = __pyx_t_1;
   16309             : 
   16310             :   /* "View.MemoryView":1217
   16311             :  * 
   16312             :  *     cdef size_t itemsize = src.memview.view.itemsize
   16313             :  *     cdef size_t size = slice_get_size(src, ndim)             # <<<<<<<<<<<<<<
   16314             :  * 
   16315             :  *     result = malloc(size)
   16316             :  */
   16317           0 :   __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim);
   16318             : 
   16319             :   /* "View.MemoryView":1219
   16320             :  *     cdef size_t size = slice_get_size(src, ndim)
   16321             :  * 
   16322             :  *     result = malloc(size)             # <<<<<<<<<<<<<<
   16323             :  *     if not result:
   16324             :  *         _err_no_memory()
   16325             :  */
   16326           0 :   __pyx_v_result = malloc(__pyx_v_size);
   16327             : 
   16328             :   /* "View.MemoryView":1220
   16329             :  * 
   16330             :  *     result = malloc(size)
   16331             :  *     if not result:             # <<<<<<<<<<<<<<
   16332             :  *         _err_no_memory()
   16333             :  * 
   16334             :  */
   16335           0 :   __pyx_t_2 = (!(__pyx_v_result != 0));
   16336           0 :   if (__pyx_t_2) {
   16337             : 
   16338             :     /* "View.MemoryView":1221
   16339             :  *     result = malloc(size)
   16340             :  *     if not result:
   16341             :  *         _err_no_memory()             # <<<<<<<<<<<<<<
   16342             :  * 
   16343             :  * 
   16344             :  */
   16345           0 :     __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error)
   16346             : 
   16347             :     /* "View.MemoryView":1220
   16348             :  * 
   16349             :  *     result = malloc(size)
   16350             :  *     if not result:             # <<<<<<<<<<<<<<
   16351             :  *         _err_no_memory()
   16352             :  * 
   16353             :  */
   16354             :   }
   16355             : 
   16356             :   /* "View.MemoryView":1224
   16357             :  * 
   16358             :  * 
   16359             :  *     tmpslice.data = <char *> result             # <<<<<<<<<<<<<<
   16360             :  *     tmpslice.memview = src.memview
   16361             :  *     for i in range(ndim):
   16362             :  */
   16363           0 :   __pyx_v_tmpslice->data = ((char *)__pyx_v_result);
   16364             : 
   16365             :   /* "View.MemoryView":1225
   16366             :  * 
   16367             :  *     tmpslice.data = <char *> result
   16368             :  *     tmpslice.memview = src.memview             # <<<<<<<<<<<<<<
   16369             :  *     for i in range(ndim):
   16370             :  *         tmpslice.shape[i] = src.shape[i]
   16371             :  */
   16372           0 :   __pyx_t_4 = __pyx_v_src->memview;
   16373           0 :   __pyx_v_tmpslice->memview = __pyx_t_4;
   16374             : 
   16375             :   /* "View.MemoryView":1226
   16376             :  *     tmpslice.data = <char *> result
   16377             :  *     tmpslice.memview = src.memview
   16378             :  *     for i in range(ndim):             # <<<<<<<<<<<<<<
   16379             :  *         tmpslice.shape[i] = src.shape[i]
   16380             :  *         tmpslice.suboffsets[i] = -1
   16381             :  */
   16382           0 :   __pyx_t_3 = __pyx_v_ndim;
   16383           0 :   __pyx_t_5 = __pyx_t_3;
   16384           0 :   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
   16385           0 :     __pyx_v_i = __pyx_t_6;
   16386             : 
   16387             :     /* "View.MemoryView":1227
   16388             :  *     tmpslice.memview = src.memview
   16389             :  *     for i in range(ndim):
   16390             :  *         tmpslice.shape[i] = src.shape[i]             # <<<<<<<<<<<<<<
   16391             :  *         tmpslice.suboffsets[i] = -1
   16392             :  * 
   16393             :  */
   16394           0 :     (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]);
   16395             : 
   16396             :     /* "View.MemoryView":1228
   16397             :  *     for i in range(ndim):
   16398             :  *         tmpslice.shape[i] = src.shape[i]
   16399             :  *         tmpslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
   16400             :  * 
   16401             :  *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order)
   16402             :  */
   16403           0 :     (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L;
   16404             :   }
   16405             : 
   16406             :   /* "View.MemoryView":1230
   16407             :  *         tmpslice.suboffsets[i] = -1
   16408             :  * 
   16409             :  *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order)             # <<<<<<<<<<<<<<
   16410             :  * 
   16411             :  * 
   16412             :  */
   16413           0 :   (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order));
   16414             : 
   16415             :   /* "View.MemoryView":1233
   16416             :  * 
   16417             :  * 
   16418             :  *     for i in range(ndim):             # <<<<<<<<<<<<<<
   16419             :  *         if tmpslice.shape[i] == 1:
   16420             :  *             tmpslice.strides[i] = 0
   16421             :  */
   16422           0 :   __pyx_t_3 = __pyx_v_ndim;
   16423           0 :   __pyx_t_5 = __pyx_t_3;
   16424           0 :   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
   16425           0 :     __pyx_v_i = __pyx_t_6;
   16426             : 
   16427             :     /* "View.MemoryView":1234
   16428             :  * 
   16429             :  *     for i in range(ndim):
   16430             :  *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
   16431             :  *             tmpslice.strides[i] = 0
   16432             :  * 
   16433             :  */
   16434           0 :     __pyx_t_2 = ((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1);
   16435           0 :     if (__pyx_t_2) {
   16436             : 
   16437             :       /* "View.MemoryView":1235
   16438             :  *     for i in range(ndim):
   16439             :  *         if tmpslice.shape[i] == 1:
   16440             :  *             tmpslice.strides[i] = 0             # <<<<<<<<<<<<<<
   16441             :  * 
   16442             :  *     if slice_is_contig(src[0], order, ndim):
   16443             :  */
   16444           0 :       (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0;
   16445             : 
   16446             :       /* "View.MemoryView":1234
   16447             :  * 
   16448             :  *     for i in range(ndim):
   16449             :  *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
   16450             :  *             tmpslice.strides[i] = 0
   16451             :  * 
   16452             :  */
   16453             :     }
   16454             :   }
   16455             : 
   16456             :   /* "View.MemoryView":1237
   16457             :  *             tmpslice.strides[i] = 0
   16458             :  * 
   16459             :  *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
   16460             :  *         memcpy(result, src.data, size)
   16461             :  *     else:
   16462             :  */
   16463           0 :   __pyx_t_2 = __pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim);
   16464           0 :   if (__pyx_t_2) {
   16465             : 
   16466             :     /* "View.MemoryView":1238
   16467             :  * 
   16468             :  *     if slice_is_contig(src[0], order, ndim):
   16469             :  *         memcpy(result, src.data, size)             # <<<<<<<<<<<<<<
   16470             :  *     else:
   16471             :  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
   16472             :  */
   16473           0 :     (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size));
   16474             : 
   16475             :     /* "View.MemoryView":1237
   16476             :  *             tmpslice.strides[i] = 0
   16477             :  * 
   16478             :  *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
   16479             :  *         memcpy(result, src.data, size)
   16480             :  *     else:
   16481             :  */
   16482           0 :     goto __pyx_L9;
   16483             :   }
   16484             : 
   16485             :   /* "View.MemoryView":1240
   16486             :  *         memcpy(result, src.data, size)
   16487             :  *     else:
   16488             :  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)             # <<<<<<<<<<<<<<
   16489             :  * 
   16490             :  *     return result
   16491             :  */
   16492             :   /*else*/ {
   16493           0 :     copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize);
   16494             :   }
   16495           0 :   __pyx_L9:;
   16496             : 
   16497             :   /* "View.MemoryView":1242
   16498             :  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
   16499             :  * 
   16500             :  *     return result             # <<<<<<<<<<<<<<
   16501             :  * 
   16502             :  * 
   16503             :  */
   16504           0 :   __pyx_r = __pyx_v_result;
   16505           0 :   goto __pyx_L0;
   16506             : 
   16507             :   /* "View.MemoryView":1205
   16508             :  * 
   16509             :  * @cname('__pyx_memoryview_copy_data_to_temp')
   16510             :  * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
   16511             :  *                              __Pyx_memviewslice *tmpslice,
   16512             :  *                              char order,
   16513             :  */
   16514             : 
   16515             :   /* function exit code */
   16516           0 :   __pyx_L1_error:;
   16517             :   #ifdef WITH_THREAD
   16518           0 :   __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   16519             :   #endif
   16520           0 :   __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename);
   16521           0 :   __pyx_r = NULL;
   16522             :   #ifdef WITH_THREAD
   16523           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   16524             :   #endif
   16525           0 :   __pyx_L0:;
   16526           0 :   return __pyx_r;
   16527             : }
   16528             : 
   16529             : /* "View.MemoryView":1247
   16530             :  * 
   16531             :  * @cname('__pyx_memoryview_err_extents')
   16532             :  * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
   16533             :  *                              Py_ssize_t extent2) except -1 with gil:
   16534             :  *     raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})"
   16535             :  */
   16536             : 
   16537           0 : static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) {
   16538           0 :   int __pyx_r;
   16539             :   __Pyx_RefNannyDeclarations
   16540           0 :   PyObject *__pyx_t_1 = NULL;
   16541           0 :   Py_ssize_t __pyx_t_2;
   16542           0 :   Py_UCS4 __pyx_t_3;
   16543           0 :   PyObject *__pyx_t_4 = NULL;
   16544           0 :   int __pyx_lineno = 0;
   16545           0 :   const char *__pyx_filename = NULL;
   16546           0 :   int __pyx_clineno = 0;
   16547             :   #ifdef WITH_THREAD
   16548           0 :   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   16549             :   #endif
   16550           0 :   __Pyx_RefNannySetupContext("_err_extents", 0);
   16551             : 
   16552             :   /* "View.MemoryView":1249
   16553             :  * cdef int _err_extents(int i, Py_ssize_t extent1,
   16554             :  *                              Py_ssize_t extent2) except -1 with gil:
   16555             :  *     raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})"             # <<<<<<<<<<<<<<
   16556             :  * 
   16557             :  * @cname('__pyx_memoryview_err_dim')
   16558             :  */
   16559           0 :   __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1249, __pyx_L1_error)
   16560           0 :   __Pyx_GOTREF(__pyx_t_1);
   16561           0 :   __pyx_t_2 = 0;
   16562           0 :   __pyx_t_3 = 127;
   16563           0 :   __Pyx_INCREF(__pyx_kp_u_got_differing_extents_in_dimensi);
   16564           0 :   __pyx_t_2 += 35;
   16565           0 :   __Pyx_GIVEREF(__pyx_kp_u_got_differing_extents_in_dimensi);
   16566           0 :   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_got_differing_extents_in_dimensi);
   16567           0 :   __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error)
   16568           0 :   __Pyx_GOTREF(__pyx_t_4);
   16569           0 :   __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
   16570           0 :   __Pyx_GIVEREF(__pyx_t_4);
   16571           0 :   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
   16572           0 :   __pyx_t_4 = 0;
   16573           0 :   __Pyx_INCREF(__pyx_kp_u_got);
   16574           0 :   __pyx_t_2 += 6;
   16575           0 :   __Pyx_GIVEREF(__pyx_kp_u_got);
   16576           0 :   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_got);
   16577           0 :   __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error)
   16578           0 :   __Pyx_GOTREF(__pyx_t_4);
   16579           0 :   __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
   16580           0 :   __Pyx_GIVEREF(__pyx_t_4);
   16581           0 :   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
   16582           0 :   __pyx_t_4 = 0;
   16583           0 :   __Pyx_INCREF(__pyx_kp_u_and);
   16584           0 :   __pyx_t_2 += 5;
   16585           0 :   __Pyx_GIVEREF(__pyx_kp_u_and);
   16586           0 :   PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_and);
   16587           0 :   __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error)
   16588           0 :   __Pyx_GOTREF(__pyx_t_4);
   16589           0 :   __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
   16590           0 :   __Pyx_GIVEREF(__pyx_t_4);
   16591           0 :   PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_4);
   16592           0 :   __pyx_t_4 = 0;
   16593           0 :   __Pyx_INCREF(__pyx_kp_u__7);
   16594           0 :   __pyx_t_2 += 1;
   16595           0 :   __Pyx_GIVEREF(__pyx_kp_u__7);
   16596           0 :   PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__7);
   16597           0 :   __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error)
   16598           0 :   __Pyx_GOTREF(__pyx_t_4);
   16599           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   16600           0 :   __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_4, 0, 0);
   16601           0 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   16602           0 :   __PYX_ERR(1, 1249, __pyx_L1_error)
   16603             : 
   16604             :   /* "View.MemoryView":1247
   16605             :  * 
   16606             :  * @cname('__pyx_memoryview_err_extents')
   16607             :  * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
   16608             :  *                              Py_ssize_t extent2) except -1 with gil:
   16609             :  *     raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})"
   16610             :  */
   16611             : 
   16612             :   /* function exit code */
   16613           0 :   __pyx_L1_error:;
   16614           0 :   __Pyx_XDECREF(__pyx_t_1);
   16615           0 :   __Pyx_XDECREF(__pyx_t_4);
   16616           0 :   __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename);
   16617           0 :   __pyx_r = -1;
   16618           0 :   __Pyx_RefNannyFinishContext();
   16619             :   #ifdef WITH_THREAD
   16620           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   16621             :   #endif
   16622           0 :   return __pyx_r;
   16623             : }
   16624             : 
   16625             : /* "View.MemoryView":1252
   16626             :  * 
   16627             :  * @cname('__pyx_memoryview_err_dim')
   16628             :  * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
   16629             :  *     raise <object>error, msg % dim
   16630             :  * 
   16631             :  */
   16632             : 
   16633           0 : static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_msg, int __pyx_v_dim) {
   16634           0 :   int __pyx_r;
   16635             :   __Pyx_RefNannyDeclarations
   16636           0 :   PyObject *__pyx_t_1 = NULL;
   16637           0 :   PyObject *__pyx_t_2 = NULL;
   16638           0 :   int __pyx_lineno = 0;
   16639           0 :   const char *__pyx_filename = NULL;
   16640           0 :   int __pyx_clineno = 0;
   16641             :   #ifdef WITH_THREAD
   16642           0 :   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   16643             :   #endif
   16644           0 :   __Pyx_RefNannySetupContext("_err_dim", 0);
   16645           0 :   __Pyx_INCREF(__pyx_v_msg);
   16646             : 
   16647             :   /* "View.MemoryView":1253
   16648             :  * @cname('__pyx_memoryview_err_dim')
   16649             :  * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil:
   16650             :  *     raise <object>error, msg % dim             # <<<<<<<<<<<<<<
   16651             :  * 
   16652             :  * @cname('__pyx_memoryview_err')
   16653             :  */
   16654           0 :   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1253, __pyx_L1_error)
   16655           0 :   __Pyx_GOTREF(__pyx_t_1);
   16656           0 :   __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1253, __pyx_L1_error)
   16657           0 :   __Pyx_GOTREF(__pyx_t_2);
   16658           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   16659           0 :   __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_t_2, 0, 0);
   16660           0 :   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   16661           0 :   __PYX_ERR(1, 1253, __pyx_L1_error)
   16662             : 
   16663             :   /* "View.MemoryView":1252
   16664             :  * 
   16665             :  * @cname('__pyx_memoryview_err_dim')
   16666             :  * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
   16667             :  *     raise <object>error, msg % dim
   16668             :  * 
   16669             :  */
   16670             : 
   16671             :   /* function exit code */
   16672           0 :   __pyx_L1_error:;
   16673           0 :   __Pyx_XDECREF(__pyx_t_1);
   16674           0 :   __Pyx_XDECREF(__pyx_t_2);
   16675           0 :   __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
   16676           0 :   __pyx_r = -1;
   16677           0 :   __Pyx_XDECREF(__pyx_v_msg);
   16678           0 :   __Pyx_RefNannyFinishContext();
   16679             :   #ifdef WITH_THREAD
   16680           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   16681             :   #endif
   16682           0 :   return __pyx_r;
   16683             : }
   16684             : 
   16685             : /* "View.MemoryView":1256
   16686             :  * 
   16687             :  * @cname('__pyx_memoryview_err')
   16688             :  * cdef int _err(PyObject *error, str msg) except -1 with gil:             # <<<<<<<<<<<<<<
   16689             :  *     raise <object>error, msg
   16690             :  * 
   16691             :  */
   16692             : 
   16693           0 : static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) {
   16694           0 :   int __pyx_r;
   16695             :   __Pyx_RefNannyDeclarations
   16696           0 :   int __pyx_lineno = 0;
   16697           0 :   const char *__pyx_filename = NULL;
   16698           0 :   int __pyx_clineno = 0;
   16699             :   #ifdef WITH_THREAD
   16700           0 :   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   16701             :   #endif
   16702           0 :   __Pyx_RefNannySetupContext("_err", 0);
   16703           0 :   __Pyx_INCREF(__pyx_v_msg);
   16704             : 
   16705             :   /* "View.MemoryView":1257
   16706             :  * @cname('__pyx_memoryview_err')
   16707             :  * cdef int _err(PyObject *error, str msg) except -1 with gil:
   16708             :  *     raise <object>error, msg             # <<<<<<<<<<<<<<
   16709             :  * 
   16710             :  * @cname('__pyx_memoryview_err_no_memory')
   16711             :  */
   16712           0 :   __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_v_msg, 0, 0);
   16713           0 :   __PYX_ERR(1, 1257, __pyx_L1_error)
   16714             : 
   16715             :   /* "View.MemoryView":1256
   16716             :  * 
   16717             :  * @cname('__pyx_memoryview_err')
   16718             :  * cdef int _err(PyObject *error, str msg) except -1 with gil:             # <<<<<<<<<<<<<<
   16719             :  *     raise <object>error, msg
   16720             :  * 
   16721             :  */
   16722             : 
   16723             :   /* function exit code */
   16724           0 :   __pyx_L1_error:;
   16725           0 :   __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
   16726           0 :   __pyx_r = -1;
   16727           0 :   __Pyx_XDECREF(__pyx_v_msg);
   16728           0 :   __Pyx_RefNannyFinishContext();
   16729             :   #ifdef WITH_THREAD
   16730           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   16731             :   #endif
   16732           0 :   return __pyx_r;
   16733             : }
   16734             : 
   16735             : /* "View.MemoryView":1260
   16736             :  * 
   16737             :  * @cname('__pyx_memoryview_err_no_memory')
   16738             :  * cdef int _err_no_memory() except -1 with gil:             # <<<<<<<<<<<<<<
   16739             :  *     raise MemoryError
   16740             :  * 
   16741             :  */
   16742             : 
   16743           0 : static int __pyx_memoryview_err_no_memory(void) {
   16744           0 :   int __pyx_r;
   16745           0 :   int __pyx_lineno = 0;
   16746           0 :   const char *__pyx_filename = NULL;
   16747           0 :   int __pyx_clineno = 0;
   16748             :   #ifdef WITH_THREAD
   16749           0 :   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   16750             :   #endif
   16751             : 
   16752             :   /* "View.MemoryView":1261
   16753             :  * @cname('__pyx_memoryview_err_no_memory')
   16754             :  * cdef int _err_no_memory() except -1 with gil:
   16755             :  *     raise MemoryError             # <<<<<<<<<<<<<<
   16756             :  * 
   16757             :  * 
   16758             :  */
   16759           0 :   PyErr_NoMemory(); __PYX_ERR(1, 1261, __pyx_L1_error)
   16760             : 
   16761             :   /* "View.MemoryView":1260
   16762             :  * 
   16763             :  * @cname('__pyx_memoryview_err_no_memory')
   16764             :  * cdef int _err_no_memory() except -1 with gil:             # <<<<<<<<<<<<<<
   16765             :  *     raise MemoryError
   16766             :  * 
   16767             :  */
   16768             : 
   16769             :   /* function exit code */
   16770           0 :   __pyx_L1_error:;
   16771           0 :   __Pyx_AddTraceback("View.MemoryView._err_no_memory", __pyx_clineno, __pyx_lineno, __pyx_filename);
   16772           0 :   __pyx_r = -1;
   16773             :   #ifdef WITH_THREAD
   16774           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   16775             :   #endif
   16776           0 :   return __pyx_r;
   16777             : }
   16778             : 
   16779             : /* "View.MemoryView":1265
   16780             :  * 
   16781             :  * @cname('__pyx_memoryview_copy_contents')
   16782             :  * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
   16783             :  *                                   __Pyx_memviewslice dst,
   16784             :  *                                   int src_ndim, int dst_ndim,
   16785             :  */
   16786             : 
   16787           0 : static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) {
   16788           0 :   void *__pyx_v_tmpdata;
   16789           0 :   size_t __pyx_v_itemsize;
   16790           0 :   int __pyx_v_i;
   16791           0 :   char __pyx_v_order;
   16792           0 :   int __pyx_v_broadcasting;
   16793           0 :   int __pyx_v_direct_copy;
   16794           0 :   __Pyx_memviewslice __pyx_v_tmp;
   16795           0 :   int __pyx_v_ndim;
   16796           0 :   int __pyx_r;
   16797           0 :   Py_ssize_t __pyx_t_1;
   16798           0 :   int __pyx_t_2;
   16799           0 :   int __pyx_t_3;
   16800           0 :   int __pyx_t_4;
   16801           0 :   int __pyx_t_5;
   16802           0 :   int __pyx_t_6;
   16803           0 :   void *__pyx_t_7;
   16804           0 :   int __pyx_lineno = 0;
   16805           0 :   const char *__pyx_filename = NULL;
   16806           0 :   int __pyx_clineno = 0;
   16807             :   #ifdef WITH_THREAD
   16808           0 :   PyGILState_STATE __pyx_gilstate_save;
   16809             :   #endif
   16810             : 
   16811             :   /* "View.MemoryView":1273
   16812             :  *     Check for overlapping memory and verify the shapes.
   16813             :  *     """
   16814             :  *     cdef void *tmpdata = NULL             # <<<<<<<<<<<<<<
   16815             :  *     cdef size_t itemsize = src.memview.view.itemsize
   16816             :  *     cdef int i
   16817             :  */
   16818           0 :   __pyx_v_tmpdata = NULL;
   16819             : 
   16820             :   /* "View.MemoryView":1274
   16821             :  *     """
   16822             :  *     cdef void *tmpdata = NULL
   16823             :  *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
   16824             :  *     cdef int i
   16825             :  *     cdef char order = get_best_order(&src, src_ndim)
   16826             :  */
   16827           0 :   __pyx_t_1 = __pyx_v_src.memview->view.itemsize;
   16828           0 :   __pyx_v_itemsize = __pyx_t_1;
   16829             : 
   16830             :   /* "View.MemoryView":1276
   16831             :  *     cdef size_t itemsize = src.memview.view.itemsize
   16832             :  *     cdef int i
   16833             :  *     cdef char order = get_best_order(&src, src_ndim)             # <<<<<<<<<<<<<<
   16834             :  *     cdef bint broadcasting = False
   16835             :  *     cdef bint direct_copy = False
   16836             :  */
   16837           0 :   __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim);
   16838             : 
   16839             :   /* "View.MemoryView":1277
   16840             :  *     cdef int i
   16841             :  *     cdef char order = get_best_order(&src, src_ndim)
   16842             :  *     cdef bint broadcasting = False             # <<<<<<<<<<<<<<
   16843             :  *     cdef bint direct_copy = False
   16844             :  *     cdef __Pyx_memviewslice tmp
   16845             :  */
   16846           0 :   __pyx_v_broadcasting = 0;
   16847             : 
   16848             :   /* "View.MemoryView":1278
   16849             :  *     cdef char order = get_best_order(&src, src_ndim)
   16850             :  *     cdef bint broadcasting = False
   16851             :  *     cdef bint direct_copy = False             # <<<<<<<<<<<<<<
   16852             :  *     cdef __Pyx_memviewslice tmp
   16853             :  * 
   16854             :  */
   16855           0 :   __pyx_v_direct_copy = 0;
   16856             : 
   16857             :   /* "View.MemoryView":1281
   16858             :  *     cdef __Pyx_memviewslice tmp
   16859             :  * 
   16860             :  *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
   16861             :  *         broadcast_leading(&src, src_ndim, dst_ndim)
   16862             :  *     elif dst_ndim < src_ndim:
   16863             :  */
   16864           0 :   __pyx_t_2 = (__pyx_v_src_ndim < __pyx_v_dst_ndim);
   16865           0 :   if (__pyx_t_2) {
   16866             : 
   16867             :     /* "View.MemoryView":1282
   16868             :  * 
   16869             :  *     if src_ndim < dst_ndim:
   16870             :  *         broadcast_leading(&src, src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
   16871             :  *     elif dst_ndim < src_ndim:
   16872             :  *         broadcast_leading(&dst, dst_ndim, src_ndim)
   16873             :  */
   16874           0 :     __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim);
   16875             : 
   16876             :     /* "View.MemoryView":1281
   16877             :  *     cdef __Pyx_memviewslice tmp
   16878             :  * 
   16879             :  *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
   16880             :  *         broadcast_leading(&src, src_ndim, dst_ndim)
   16881             :  *     elif dst_ndim < src_ndim:
   16882             :  */
   16883           0 :     goto __pyx_L3;
   16884             :   }
   16885             : 
   16886             :   /* "View.MemoryView":1283
   16887             :  *     if src_ndim < dst_ndim:
   16888             :  *         broadcast_leading(&src, src_ndim, dst_ndim)
   16889             :  *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
   16890             :  *         broadcast_leading(&dst, dst_ndim, src_ndim)
   16891             :  * 
   16892             :  */
   16893           0 :   __pyx_t_2 = (__pyx_v_dst_ndim < __pyx_v_src_ndim);
   16894           0 :   if (__pyx_t_2) {
   16895             : 
   16896             :     /* "View.MemoryView":1284
   16897             :  *         broadcast_leading(&src, src_ndim, dst_ndim)
   16898             :  *     elif dst_ndim < src_ndim:
   16899             :  *         broadcast_leading(&dst, dst_ndim, src_ndim)             # <<<<<<<<<<<<<<
   16900             :  * 
   16901             :  *     cdef int ndim = max(src_ndim, dst_ndim)
   16902             :  */
   16903           0 :     __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim);
   16904             : 
   16905             :     /* "View.MemoryView":1283
   16906             :  *     if src_ndim < dst_ndim:
   16907             :  *         broadcast_leading(&src, src_ndim, dst_ndim)
   16908             :  *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
   16909             :  *         broadcast_leading(&dst, dst_ndim, src_ndim)
   16910             :  * 
   16911             :  */
   16912             :   }
   16913           0 :   __pyx_L3:;
   16914             : 
   16915             :   /* "View.MemoryView":1286
   16916             :  *         broadcast_leading(&dst, dst_ndim, src_ndim)
   16917             :  * 
   16918             :  *     cdef int ndim = max(src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
   16919             :  * 
   16920             :  *     for i in range(ndim):
   16921             :  */
   16922           0 :   __pyx_t_3 = __pyx_v_dst_ndim;
   16923           0 :   __pyx_t_4 = __pyx_v_src_ndim;
   16924           0 :   __pyx_t_2 = (__pyx_t_3 > __pyx_t_4);
   16925           0 :   if (__pyx_t_2) {
   16926             :     __pyx_t_5 = __pyx_t_3;
   16927             :   } else {
   16928             :     __pyx_t_5 = __pyx_t_4;
   16929             :   }
   16930           0 :   __pyx_v_ndim = __pyx_t_5;
   16931             : 
   16932             :   /* "View.MemoryView":1288
   16933             :  *     cdef int ndim = max(src_ndim, dst_ndim)
   16934             :  * 
   16935             :  *     for i in range(ndim):             # <<<<<<<<<<<<<<
   16936             :  *         if src.shape[i] != dst.shape[i]:
   16937             :  *             if src.shape[i] == 1:
   16938             :  */
   16939           0 :   __pyx_t_5 = __pyx_v_ndim;
   16940           0 :   __pyx_t_3 = __pyx_t_5;
   16941           0 :   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   16942           0 :     __pyx_v_i = __pyx_t_4;
   16943             : 
   16944             :     /* "View.MemoryView":1289
   16945             :  * 
   16946             :  *     for i in range(ndim):
   16947             :  *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
   16948             :  *             if src.shape[i] == 1:
   16949             :  *                 broadcasting = True
   16950             :  */
   16951           0 :     __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i]));
   16952           0 :     if (__pyx_t_2) {
   16953             : 
   16954             :       /* "View.MemoryView":1290
   16955             :  *     for i in range(ndim):
   16956             :  *         if src.shape[i] != dst.shape[i]:
   16957             :  *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
   16958             :  *                 broadcasting = True
   16959             :  *                 src.strides[i] = 0
   16960             :  */
   16961           0 :       __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) == 1);
   16962           0 :       if (__pyx_t_2) {
   16963             : 
   16964             :         /* "View.MemoryView":1291
   16965             :  *         if src.shape[i] != dst.shape[i]:
   16966             :  *             if src.shape[i] == 1:
   16967             :  *                 broadcasting = True             # <<<<<<<<<<<<<<
   16968             :  *                 src.strides[i] = 0
   16969             :  *             else:
   16970             :  */
   16971           0 :         __pyx_v_broadcasting = 1;
   16972             : 
   16973             :         /* "View.MemoryView":1292
   16974             :  *             if src.shape[i] == 1:
   16975             :  *                 broadcasting = True
   16976             :  *                 src.strides[i] = 0             # <<<<<<<<<<<<<<
   16977             :  *             else:
   16978             :  *                 _err_extents(i, dst.shape[i], src.shape[i])
   16979             :  */
   16980           0 :         (__pyx_v_src.strides[__pyx_v_i]) = 0;
   16981             : 
   16982             :         /* "View.MemoryView":1290
   16983             :  *     for i in range(ndim):
   16984             :  *         if src.shape[i] != dst.shape[i]:
   16985             :  *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
   16986             :  *                 broadcasting = True
   16987             :  *                 src.strides[i] = 0
   16988             :  */
   16989           0 :         goto __pyx_L7;
   16990             :       }
   16991             : 
   16992             :       /* "View.MemoryView":1294
   16993             :  *                 src.strides[i] = 0
   16994             :  *             else:
   16995             :  *                 _err_extents(i, dst.shape[i], src.shape[i])             # <<<<<<<<<<<<<<
   16996             :  * 
   16997             :  *         if src.suboffsets[i] >= 0:
   16998             :  */
   16999             :       /*else*/ {
   17000           0 :         __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error)
   17001             :       }
   17002           0 :       __pyx_L7:;
   17003             : 
   17004             :       /* "View.MemoryView":1289
   17005             :  * 
   17006             :  *     for i in range(ndim):
   17007             :  *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
   17008             :  *             if src.shape[i] == 1:
   17009             :  *                 broadcasting = True
   17010             :  */
   17011             :     }
   17012             : 
   17013             :     /* "View.MemoryView":1296
   17014             :  *                 _err_extents(i, dst.shape[i], src.shape[i])
   17015             :  * 
   17016             :  *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
   17017             :  *             _err_dim(PyExc_ValueError, "Dimension %d is not direct", i)
   17018             :  * 
   17019             :  */
   17020           0 :     __pyx_t_2 = ((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0);
   17021           0 :     if (__pyx_t_2) {
   17022             : 
   17023             :       /* "View.MemoryView":1297
   17024             :  * 
   17025             :  *         if src.suboffsets[i] >= 0:
   17026             :  *             _err_dim(PyExc_ValueError, "Dimension %d is not direct", i)             # <<<<<<<<<<<<<<
   17027             :  * 
   17028             :  *     if slices_overlap(&src, &dst, ndim, itemsize):
   17029             :  */
   17030           0 :       __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_kp_s_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error)
   17031             : 
   17032             :       /* "View.MemoryView":1296
   17033             :  *                 _err_extents(i, dst.shape[i], src.shape[i])
   17034             :  * 
   17035             :  *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
   17036             :  *             _err_dim(PyExc_ValueError, "Dimension %d is not direct", i)
   17037             :  * 
   17038             :  */
   17039             :     }
   17040             :   }
   17041             : 
   17042             :   /* "View.MemoryView":1299
   17043             :  *             _err_dim(PyExc_ValueError, "Dimension %d is not direct", i)
   17044             :  * 
   17045             :  *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
   17046             :  * 
   17047             :  *         if not slice_is_contig(src, order, ndim):
   17048             :  */
   17049           0 :   __pyx_t_2 = __pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize);
   17050           0 :   if (__pyx_t_2) {
   17051             : 
   17052             :     /* "View.MemoryView":1301
   17053             :  *     if slices_overlap(&src, &dst, ndim, itemsize):
   17054             :  * 
   17055             :  *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
   17056             :  *             order = get_best_order(&dst, ndim)
   17057             :  * 
   17058             :  */
   17059           0 :     __pyx_t_2 = (!__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim));
   17060           0 :     if (__pyx_t_2) {
   17061             : 
   17062             :       /* "View.MemoryView":1302
   17063             :  * 
   17064             :  *         if not slice_is_contig(src, order, ndim):
   17065             :  *             order = get_best_order(&dst, ndim)             # <<<<<<<<<<<<<<
   17066             :  * 
   17067             :  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
   17068             :  */
   17069           0 :       __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim);
   17070             : 
   17071             :       /* "View.MemoryView":1301
   17072             :  *     if slices_overlap(&src, &dst, ndim, itemsize):
   17073             :  * 
   17074             :  *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
   17075             :  *             order = get_best_order(&dst, ndim)
   17076             :  * 
   17077             :  */
   17078             :     }
   17079             : 
   17080             :     /* "View.MemoryView":1304
   17081             :  *             order = get_best_order(&dst, ndim)
   17082             :  * 
   17083             :  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)             # <<<<<<<<<<<<<<
   17084             :  *         src = tmp
   17085             :  * 
   17086             :  */
   17087           0 :     __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1304, __pyx_L1_error)
   17088           0 :     __pyx_v_tmpdata = __pyx_t_7;
   17089             : 
   17090             :     /* "View.MemoryView":1305
   17091             :  * 
   17092             :  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
   17093             :  *         src = tmp             # <<<<<<<<<<<<<<
   17094             :  * 
   17095             :  *     if not broadcasting:
   17096             :  */
   17097           0 :     __pyx_v_src = __pyx_v_tmp;
   17098             : 
   17099             :     /* "View.MemoryView":1299
   17100             :  *             _err_dim(PyExc_ValueError, "Dimension %d is not direct", i)
   17101             :  * 
   17102             :  *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
   17103             :  * 
   17104             :  *         if not slice_is_contig(src, order, ndim):
   17105             :  */
   17106             :   }
   17107             : 
   17108             :   /* "View.MemoryView":1307
   17109             :  *         src = tmp
   17110             :  * 
   17111             :  *     if not broadcasting:             # <<<<<<<<<<<<<<
   17112             :  * 
   17113             :  * 
   17114             :  */
   17115           0 :   __pyx_t_2 = (!__pyx_v_broadcasting);
   17116           0 :   if (__pyx_t_2) {
   17117             : 
   17118             :     /* "View.MemoryView":1310
   17119             :  * 
   17120             :  * 
   17121             :  *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
   17122             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)
   17123             :  *         elif slice_is_contig(src, 'F', ndim):
   17124             :  */
   17125           0 :     __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim);
   17126           0 :     if (__pyx_t_2) {
   17127             : 
   17128             :       /* "View.MemoryView":1311
   17129             :  * 
   17130             :  *         if slice_is_contig(src, 'C', ndim):
   17131             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)             # <<<<<<<<<<<<<<
   17132             :  *         elif slice_is_contig(src, 'F', ndim):
   17133             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)
   17134             :  */
   17135           0 :       __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim);
   17136             : 
   17137             :       /* "View.MemoryView":1310
   17138             :  * 
   17139             :  * 
   17140             :  *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
   17141             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)
   17142             :  *         elif slice_is_contig(src, 'F', ndim):
   17143             :  */
   17144           0 :       goto __pyx_L12;
   17145             :     }
   17146             : 
   17147             :     /* "View.MemoryView":1312
   17148             :  *         if slice_is_contig(src, 'C', ndim):
   17149             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)
   17150             :  *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
   17151             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)
   17152             :  * 
   17153             :  */
   17154           0 :     __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim);
   17155           0 :     if (__pyx_t_2) {
   17156             : 
   17157             :       /* "View.MemoryView":1313
   17158             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)
   17159             :  *         elif slice_is_contig(src, 'F', ndim):
   17160             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)             # <<<<<<<<<<<<<<
   17161             :  * 
   17162             :  *         if direct_copy:
   17163             :  */
   17164           0 :       __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim);
   17165             : 
   17166             :       /* "View.MemoryView":1312
   17167             :  *         if slice_is_contig(src, 'C', ndim):
   17168             :  *             direct_copy = slice_is_contig(dst, 'C', ndim)
   17169             :  *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
   17170             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)
   17171             :  * 
   17172             :  */
   17173             :     }
   17174           0 :     __pyx_L12:;
   17175             : 
   17176             :     /* "View.MemoryView":1315
   17177             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)
   17178             :  * 
   17179             :  *         if direct_copy:             # <<<<<<<<<<<<<<
   17180             :  * 
   17181             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17182             :  */
   17183           0 :     if (__pyx_v_direct_copy) {
   17184             : 
   17185             :       /* "View.MemoryView":1317
   17186             :  *         if direct_copy:
   17187             :  * 
   17188             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=False)             # <<<<<<<<<<<<<<
   17189             :  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
   17190             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17191             :  */
   17192           0 :       __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
   17193             : 
   17194             :       /* "View.MemoryView":1318
   17195             :  * 
   17196             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17197             :  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))             # <<<<<<<<<<<<<<
   17198             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17199             :  *             free(tmpdata)
   17200             :  */
   17201           0 :       (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim)));
   17202             : 
   17203             :       /* "View.MemoryView":1319
   17204             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17205             :  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
   17206             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=True)             # <<<<<<<<<<<<<<
   17207             :  *             free(tmpdata)
   17208             :  *             return 0
   17209             :  */
   17210           0 :       __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
   17211             : 
   17212             :       /* "View.MemoryView":1320
   17213             :  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
   17214             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17215             :  *             free(tmpdata)             # <<<<<<<<<<<<<<
   17216             :  *             return 0
   17217             :  * 
   17218             :  */
   17219           0 :       free(__pyx_v_tmpdata);
   17220             : 
   17221             :       /* "View.MemoryView":1321
   17222             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17223             :  *             free(tmpdata)
   17224             :  *             return 0             # <<<<<<<<<<<<<<
   17225             :  * 
   17226             :  *     if order == 'F' == get_best_order(&dst, ndim):
   17227             :  */
   17228           0 :       __pyx_r = 0;
   17229           0 :       goto __pyx_L0;
   17230             : 
   17231             :       /* "View.MemoryView":1315
   17232             :  *             direct_copy = slice_is_contig(dst, 'F', ndim)
   17233             :  * 
   17234             :  *         if direct_copy:             # <<<<<<<<<<<<<<
   17235             :  * 
   17236             :  *             refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17237             :  */
   17238             :     }
   17239             : 
   17240             :     /* "View.MemoryView":1307
   17241             :  *         src = tmp
   17242             :  * 
   17243             :  *     if not broadcasting:             # <<<<<<<<<<<<<<
   17244             :  * 
   17245             :  * 
   17246             :  */
   17247             :   }
   17248             : 
   17249             :   /* "View.MemoryView":1323
   17250             :  *             return 0
   17251             :  * 
   17252             :  *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
   17253             :  * 
   17254             :  * 
   17255             :  */
   17256           0 :   __pyx_t_2 = (__pyx_v_order == 'F');
   17257           0 :   if (__pyx_t_2) {
   17258           0 :     __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim));
   17259             :   }
   17260           0 :   if (__pyx_t_2) {
   17261             : 
   17262             :     /* "View.MemoryView":1326
   17263             :  * 
   17264             :  * 
   17265             :  *         transpose_memslice(&src)             # <<<<<<<<<<<<<<
   17266             :  *         transpose_memslice(&dst)
   17267             :  * 
   17268             :  */
   17269           0 :     __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1326, __pyx_L1_error)
   17270             : 
   17271             :     /* "View.MemoryView":1327
   17272             :  * 
   17273             :  *         transpose_memslice(&src)
   17274             :  *         transpose_memslice(&dst)             # <<<<<<<<<<<<<<
   17275             :  * 
   17276             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17277             :  */
   17278           0 :     __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error)
   17279             : 
   17280             :     /* "View.MemoryView":1323
   17281             :  *             return 0
   17282             :  * 
   17283             :  *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
   17284             :  * 
   17285             :  * 
   17286             :  */
   17287             :   }
   17288             : 
   17289             :   /* "View.MemoryView":1329
   17290             :  *         transpose_memslice(&dst)
   17291             :  * 
   17292             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=False)             # <<<<<<<<<<<<<<
   17293             :  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
   17294             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17295             :  */
   17296           0 :   __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
   17297             : 
   17298             :   /* "View.MemoryView":1330
   17299             :  * 
   17300             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17301             :  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)             # <<<<<<<<<<<<<<
   17302             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17303             :  * 
   17304             :  */
   17305           0 :   copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize);
   17306             : 
   17307             :   /* "View.MemoryView":1331
   17308             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=False)
   17309             :  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
   17310             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=True)             # <<<<<<<<<<<<<<
   17311             :  * 
   17312             :  *     free(tmpdata)
   17313             :  */
   17314           0 :   __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
   17315             : 
   17316             :   /* "View.MemoryView":1333
   17317             :  *     refcount_copying(&dst, dtype_is_object, ndim, inc=True)
   17318             :  * 
   17319             :  *     free(tmpdata)             # <<<<<<<<<<<<<<
   17320             :  *     return 0
   17321             :  * 
   17322             :  */
   17323           0 :   free(__pyx_v_tmpdata);
   17324             : 
   17325             :   /* "View.MemoryView":1334
   17326             :  * 
   17327             :  *     free(tmpdata)
   17328             :  *     return 0             # <<<<<<<<<<<<<<
   17329             :  * 
   17330             :  * @cname('__pyx_memoryview_broadcast_leading')
   17331             :  */
   17332           0 :   __pyx_r = 0;
   17333           0 :   goto __pyx_L0;
   17334             : 
   17335             :   /* "View.MemoryView":1265
   17336             :  * 
   17337             :  * @cname('__pyx_memoryview_copy_contents')
   17338             :  * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
   17339             :  *                                   __Pyx_memviewslice dst,
   17340             :  *                                   int src_ndim, int dst_ndim,
   17341             :  */
   17342             : 
   17343             :   /* function exit code */
   17344           0 :   __pyx_L1_error:;
   17345             :   #ifdef WITH_THREAD
   17346           0 :   __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   17347             :   #endif
   17348           0 :   __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename);
   17349           0 :   __pyx_r = -1;
   17350             :   #ifdef WITH_THREAD
   17351           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   17352             :   #endif
   17353           0 :   __pyx_L0:;
   17354           0 :   return __pyx_r;
   17355             : }
   17356             : 
   17357             : /* "View.MemoryView":1337
   17358             :  * 
   17359             :  * @cname('__pyx_memoryview_broadcast_leading')
   17360             :  * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
   17361             :  *                             int ndim,
   17362             :  *                             int ndim_other) noexcept nogil:
   17363             :  */
   17364             : 
   17365           0 : static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) {
   17366           0 :   int __pyx_v_i;
   17367           0 :   int __pyx_v_offset;
   17368           0 :   int __pyx_t_1;
   17369           0 :   int __pyx_t_2;
   17370           0 :   int __pyx_t_3;
   17371             : 
   17372             :   /* "View.MemoryView":1341
   17373             :  *                             int ndim_other) noexcept nogil:
   17374             :  *     cdef int i
   17375             :  *     cdef int offset = ndim_other - ndim             # <<<<<<<<<<<<<<
   17376             :  * 
   17377             :  *     for i in range(ndim - 1, -1, -1):
   17378             :  */
   17379           0 :   __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim);
   17380             : 
   17381             :   /* "View.MemoryView":1343
   17382             :  *     cdef int offset = ndim_other - ndim
   17383             :  * 
   17384             :  *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
   17385             :  *         mslice.shape[i + offset] = mslice.shape[i]
   17386             :  *         mslice.strides[i + offset] = mslice.strides[i]
   17387             :  */
   17388           0 :   for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) {
   17389           0 :     __pyx_v_i = __pyx_t_1;
   17390             : 
   17391             :     /* "View.MemoryView":1344
   17392             :  * 
   17393             :  *     for i in range(ndim - 1, -1, -1):
   17394             :  *         mslice.shape[i + offset] = mslice.shape[i]             # <<<<<<<<<<<<<<
   17395             :  *         mslice.strides[i + offset] = mslice.strides[i]
   17396             :  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
   17397             :  */
   17398           0 :     (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]);
   17399             : 
   17400             :     /* "View.MemoryView":1345
   17401             :  *     for i in range(ndim - 1, -1, -1):
   17402             :  *         mslice.shape[i + offset] = mslice.shape[i]
   17403             :  *         mslice.strides[i + offset] = mslice.strides[i]             # <<<<<<<<<<<<<<
   17404             :  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
   17405             :  * 
   17406             :  */
   17407           0 :     (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]);
   17408             : 
   17409             :     /* "View.MemoryView":1346
   17410             :  *         mslice.shape[i + offset] = mslice.shape[i]
   17411             :  *         mslice.strides[i + offset] = mslice.strides[i]
   17412             :  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]             # <<<<<<<<<<<<<<
   17413             :  * 
   17414             :  *     for i in range(offset):
   17415             :  */
   17416           0 :     (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]);
   17417             :   }
   17418             : 
   17419             :   /* "View.MemoryView":1348
   17420             :  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
   17421             :  * 
   17422             :  *     for i in range(offset):             # <<<<<<<<<<<<<<
   17423             :  *         mslice.shape[i] = 1
   17424             :  *         mslice.strides[i] = mslice.strides[0]
   17425             :  */
   17426           0 :   __pyx_t_1 = __pyx_v_offset;
   17427             :   __pyx_t_2 = __pyx_t_1;
   17428           0 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   17429           0 :     __pyx_v_i = __pyx_t_3;
   17430             : 
   17431             :     /* "View.MemoryView":1349
   17432             :  * 
   17433             :  *     for i in range(offset):
   17434             :  *         mslice.shape[i] = 1             # <<<<<<<<<<<<<<
   17435             :  *         mslice.strides[i] = mslice.strides[0]
   17436             :  *         mslice.suboffsets[i] = -1
   17437             :  */
   17438           0 :     (__pyx_v_mslice->shape[__pyx_v_i]) = 1;
   17439             : 
   17440             :     /* "View.MemoryView":1350
   17441             :  *     for i in range(offset):
   17442             :  *         mslice.shape[i] = 1
   17443             :  *         mslice.strides[i] = mslice.strides[0]             # <<<<<<<<<<<<<<
   17444             :  *         mslice.suboffsets[i] = -1
   17445             :  * 
   17446             :  */
   17447           0 :     (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]);
   17448             : 
   17449             :     /* "View.MemoryView":1351
   17450             :  *         mslice.shape[i] = 1
   17451             :  *         mslice.strides[i] = mslice.strides[0]
   17452             :  *         mslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
   17453             :  * 
   17454             :  * 
   17455             :  */
   17456           0 :     (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L;
   17457             :   }
   17458             : 
   17459             :   /* "View.MemoryView":1337
   17460             :  * 
   17461             :  * @cname('__pyx_memoryview_broadcast_leading')
   17462             :  * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
   17463             :  *                             int ndim,
   17464             :  *                             int ndim_other) noexcept nogil:
   17465             :  */
   17466             : 
   17467             :   /* function exit code */
   17468           0 : }
   17469             : 
   17470             : /* "View.MemoryView":1359
   17471             :  * 
   17472             :  * @cname('__pyx_memoryview_refcount_copying')
   17473             :  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil:             # <<<<<<<<<<<<<<
   17474             :  * 
   17475             :  *     if dtype_is_object:
   17476             :  */
   17477             : 
   17478           0 : static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) {
   17479             : 
   17480             :   /* "View.MemoryView":1361
   17481             :  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil:
   17482             :  * 
   17483             :  *     if dtype_is_object:             # <<<<<<<<<<<<<<
   17484             :  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc)
   17485             :  * 
   17486             :  */
   17487           0 :   if (__pyx_v_dtype_is_object) {
   17488             : 
   17489             :     /* "View.MemoryView":1362
   17490             :  * 
   17491             :  *     if dtype_is_object:
   17492             :  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc)             # <<<<<<<<<<<<<<
   17493             :  * 
   17494             :  * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
   17495             :  */
   17496           0 :     __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc);
   17497             : 
   17498             :     /* "View.MemoryView":1361
   17499             :  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil:
   17500             :  * 
   17501             :  *     if dtype_is_object:             # <<<<<<<<<<<<<<
   17502             :  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc)
   17503             :  * 
   17504             :  */
   17505             :   }
   17506             : 
   17507             :   /* "View.MemoryView":1359
   17508             :  * 
   17509             :  * @cname('__pyx_memoryview_refcount_copying')
   17510             :  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil:             # <<<<<<<<<<<<<<
   17511             :  * 
   17512             :  *     if dtype_is_object:
   17513             :  */
   17514             : 
   17515             :   /* function exit code */
   17516           0 : }
   17517             : 
   17518             : /* "View.MemoryView":1365
   17519             :  * 
   17520             :  * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
   17521             :  * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17522             :  *                                              Py_ssize_t *strides, int ndim,
   17523             :  *                                              bint inc) noexcept with gil:
   17524             :  */
   17525             : 
   17526           0 : static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
   17527             :   #ifdef WITH_THREAD
   17528           0 :   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
   17529             :   #endif
   17530             : 
   17531             :   /* "View.MemoryView":1368
   17532             :  *                                              Py_ssize_t *strides, int ndim,
   17533             :  *                                              bint inc) noexcept with gil:
   17534             :  *     refcount_objects_in_slice(data, shape, strides, ndim, inc)             # <<<<<<<<<<<<<<
   17535             :  * 
   17536             :  * @cname('__pyx_memoryview_refcount_objects_in_slice')
   17537             :  */
   17538           0 :   __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc);
   17539             : 
   17540             :   /* "View.MemoryView":1365
   17541             :  * 
   17542             :  * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
   17543             :  * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17544             :  *                                              Py_ssize_t *strides, int ndim,
   17545             :  *                                              bint inc) noexcept with gil:
   17546             :  */
   17547             : 
   17548             :   /* function exit code */
   17549             :   #ifdef WITH_THREAD
   17550           0 :   __Pyx_PyGILState_Release(__pyx_gilstate_save);
   17551             :   #endif
   17552           0 : }
   17553             : 
   17554             : /* "View.MemoryView":1371
   17555             :  * 
   17556             :  * @cname('__pyx_memoryview_refcount_objects_in_slice')
   17557             :  * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17558             :  *                                     Py_ssize_t *strides, int ndim, bint inc) noexcept:
   17559             :  *     cdef Py_ssize_t i
   17560             :  */
   17561             : 
   17562           0 : static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
   17563           0 :   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
   17564           0 :   Py_ssize_t __pyx_v_stride;
   17565           0 :   Py_ssize_t __pyx_t_1;
   17566           0 :   Py_ssize_t __pyx_t_2;
   17567           0 :   Py_ssize_t __pyx_t_3;
   17568           0 :   int __pyx_t_4;
   17569             : 
   17570             :   /* "View.MemoryView":1374
   17571             :  *                                     Py_ssize_t *strides, int ndim, bint inc) noexcept:
   17572             :  *     cdef Py_ssize_t i
   17573             :  *     cdef Py_ssize_t stride = strides[0]             # <<<<<<<<<<<<<<
   17574             :  * 
   17575             :  *     for i in range(shape[0]):
   17576             :  */
   17577           0 :   __pyx_v_stride = (__pyx_v_strides[0]);
   17578             : 
   17579             :   /* "View.MemoryView":1376
   17580             :  *     cdef Py_ssize_t stride = strides[0]
   17581             :  * 
   17582             :  *     for i in range(shape[0]):             # <<<<<<<<<<<<<<
   17583             :  *         if ndim == 1:
   17584             :  *             if inc:
   17585             :  */
   17586           0 :   __pyx_t_1 = (__pyx_v_shape[0]);
   17587           0 :   __pyx_t_2 = __pyx_t_1;
   17588           0 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   17589           0 :     __pyx_v_i = __pyx_t_3;
   17590             : 
   17591             :     /* "View.MemoryView":1377
   17592             :  * 
   17593             :  *     for i in range(shape[0]):
   17594             :  *         if ndim == 1:             # <<<<<<<<<<<<<<
   17595             :  *             if inc:
   17596             :  *                 Py_INCREF((<PyObject **> data)[0])
   17597             :  */
   17598           0 :     __pyx_t_4 = (__pyx_v_ndim == 1);
   17599           0 :     if (__pyx_t_4) {
   17600             : 
   17601             :       /* "View.MemoryView":1378
   17602             :  *     for i in range(shape[0]):
   17603             :  *         if ndim == 1:
   17604             :  *             if inc:             # <<<<<<<<<<<<<<
   17605             :  *                 Py_INCREF((<PyObject **> data)[0])
   17606             :  *             else:
   17607             :  */
   17608           0 :       if (__pyx_v_inc) {
   17609             : 
   17610             :         /* "View.MemoryView":1379
   17611             :  *         if ndim == 1:
   17612             :  *             if inc:
   17613             :  *                 Py_INCREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
   17614             :  *             else:
   17615             :  *                 Py_DECREF((<PyObject **> data)[0])
   17616             :  */
   17617           0 :         Py_INCREF((((PyObject **)__pyx_v_data)[0]));
   17618             : 
   17619             :         /* "View.MemoryView":1378
   17620             :  *     for i in range(shape[0]):
   17621             :  *         if ndim == 1:
   17622             :  *             if inc:             # <<<<<<<<<<<<<<
   17623             :  *                 Py_INCREF((<PyObject **> data)[0])
   17624             :  *             else:
   17625             :  */
   17626           0 :         goto __pyx_L6;
   17627             :       }
   17628             : 
   17629             :       /* "View.MemoryView":1381
   17630             :  *                 Py_INCREF((<PyObject **> data)[0])
   17631             :  *             else:
   17632             :  *                 Py_DECREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
   17633             :  *         else:
   17634             :  *             refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc)
   17635             :  */
   17636             :       /*else*/ {
   17637           0 :         Py_DECREF((((PyObject **)__pyx_v_data)[0]));
   17638             :       }
   17639           0 :       __pyx_L6:;
   17640             : 
   17641             :       /* "View.MemoryView":1377
   17642             :  * 
   17643             :  *     for i in range(shape[0]):
   17644             :  *         if ndim == 1:             # <<<<<<<<<<<<<<
   17645             :  *             if inc:
   17646             :  *                 Py_INCREF((<PyObject **> data)[0])
   17647             :  */
   17648           0 :       goto __pyx_L5;
   17649             :     }
   17650             : 
   17651             :     /* "View.MemoryView":1383
   17652             :  *                 Py_DECREF((<PyObject **> data)[0])
   17653             :  *         else:
   17654             :  *             refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc)             # <<<<<<<<<<<<<<
   17655             :  * 
   17656             :  *         data += stride
   17657             :  */
   17658             :     /*else*/ {
   17659           0 :       __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc);
   17660             :     }
   17661           0 :     __pyx_L5:;
   17662             : 
   17663             :     /* "View.MemoryView":1385
   17664             :  *             refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc)
   17665             :  * 
   17666             :  *         data += stride             # <<<<<<<<<<<<<<
   17667             :  * 
   17668             :  * 
   17669             :  */
   17670           0 :     __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
   17671             :   }
   17672             : 
   17673             :   /* "View.MemoryView":1371
   17674             :  * 
   17675             :  * @cname('__pyx_memoryview_refcount_objects_in_slice')
   17676             :  * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17677             :  *                                     Py_ssize_t *strides, int ndim, bint inc) noexcept:
   17678             :  *     cdef Py_ssize_t i
   17679             :  */
   17680             : 
   17681             :   /* function exit code */
   17682           0 : }
   17683             : 
   17684             : /* "View.MemoryView":1391
   17685             :  * 
   17686             :  * @cname('__pyx_memoryview_slice_assign_scalar')
   17687             :  * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
   17688             :  *                               size_t itemsize, void *item,
   17689             :  *                               bint dtype_is_object) noexcept nogil:
   17690             :  */
   17691             : 
   17692           0 : static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) {
   17693             : 
   17694             :   /* "View.MemoryView":1394
   17695             :  *                               size_t itemsize, void *item,
   17696             :  *                               bint dtype_is_object) noexcept nogil:
   17697             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=False)             # <<<<<<<<<<<<<<
   17698             :  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item)
   17699             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=True)
   17700             :  */
   17701           0 :   __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
   17702             : 
   17703             :   /* "View.MemoryView":1395
   17704             :  *                               bint dtype_is_object) noexcept nogil:
   17705             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=False)
   17706             :  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item)             # <<<<<<<<<<<<<<
   17707             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=True)
   17708             :  * 
   17709             :  */
   17710           0 :   __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item);
   17711             : 
   17712             :   /* "View.MemoryView":1396
   17713             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=False)
   17714             :  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item)
   17715             :  *     refcount_copying(dst, dtype_is_object, ndim, inc=True)             # <<<<<<<<<<<<<<
   17716             :  * 
   17717             :  * 
   17718             :  */
   17719           0 :   __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
   17720             : 
   17721             :   /* "View.MemoryView":1391
   17722             :  * 
   17723             :  * @cname('__pyx_memoryview_slice_assign_scalar')
   17724             :  * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
   17725             :  *                               size_t itemsize, void *item,
   17726             :  *                               bint dtype_is_object) noexcept nogil:
   17727             :  */
   17728             : 
   17729             :   /* function exit code */
   17730           0 : }
   17731             : 
   17732             : /* "View.MemoryView":1400
   17733             :  * 
   17734             :  * @cname('__pyx_memoryview__slice_assign_scalar')
   17735             :  * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17736             :  *                               Py_ssize_t *strides, int ndim,
   17737             :  *                               size_t itemsize, void *item) noexcept nogil:
   17738             :  */
   17739             : 
   17740           0 : static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) {
   17741           0 :   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
   17742           0 :   Py_ssize_t __pyx_v_stride;
   17743           0 :   Py_ssize_t __pyx_v_extent;
   17744           0 :   int __pyx_t_1;
   17745           0 :   Py_ssize_t __pyx_t_2;
   17746           0 :   Py_ssize_t __pyx_t_3;
   17747           0 :   Py_ssize_t __pyx_t_4;
   17748             : 
   17749             :   /* "View.MemoryView":1404
   17750             :  *                               size_t itemsize, void *item) noexcept nogil:
   17751             :  *     cdef Py_ssize_t i
   17752             :  *     cdef Py_ssize_t stride = strides[0]             # <<<<<<<<<<<<<<
   17753             :  *     cdef Py_ssize_t extent = shape[0]
   17754             :  * 
   17755             :  */
   17756           0 :   __pyx_v_stride = (__pyx_v_strides[0]);
   17757             : 
   17758             :   /* "View.MemoryView":1405
   17759             :  *     cdef Py_ssize_t i
   17760             :  *     cdef Py_ssize_t stride = strides[0]
   17761             :  *     cdef Py_ssize_t extent = shape[0]             # <<<<<<<<<<<<<<
   17762             :  * 
   17763             :  *     if ndim == 1:
   17764             :  */
   17765           0 :   __pyx_v_extent = (__pyx_v_shape[0]);
   17766             : 
   17767             :   /* "View.MemoryView":1407
   17768             :  *     cdef Py_ssize_t extent = shape[0]
   17769             :  * 
   17770             :  *     if ndim == 1:             # <<<<<<<<<<<<<<
   17771             :  *         for i in range(extent):
   17772             :  *             memcpy(data, item, itemsize)
   17773             :  */
   17774           0 :   __pyx_t_1 = (__pyx_v_ndim == 1);
   17775           0 :   if (__pyx_t_1) {
   17776             : 
   17777             :     /* "View.MemoryView":1408
   17778             :  * 
   17779             :  *     if ndim == 1:
   17780             :  *         for i in range(extent):             # <<<<<<<<<<<<<<
   17781             :  *             memcpy(data, item, itemsize)
   17782             :  *             data += stride
   17783             :  */
   17784             :     __pyx_t_2 = __pyx_v_extent;
   17785             :     __pyx_t_3 = __pyx_t_2;
   17786           0 :     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   17787           0 :       __pyx_v_i = __pyx_t_4;
   17788             : 
   17789             :       /* "View.MemoryView":1409
   17790             :  *     if ndim == 1:
   17791             :  *         for i in range(extent):
   17792             :  *             memcpy(data, item, itemsize)             # <<<<<<<<<<<<<<
   17793             :  *             data += stride
   17794             :  *     else:
   17795             :  */
   17796           0 :       (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize));
   17797             : 
   17798             :       /* "View.MemoryView":1410
   17799             :  *         for i in range(extent):
   17800             :  *             memcpy(data, item, itemsize)
   17801             :  *             data += stride             # <<<<<<<<<<<<<<
   17802             :  *     else:
   17803             :  *         for i in range(extent):
   17804             :  */
   17805           0 :       __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
   17806             :     }
   17807             : 
   17808             :     /* "View.MemoryView":1407
   17809             :  *     cdef Py_ssize_t extent = shape[0]
   17810             :  * 
   17811             :  *     if ndim == 1:             # <<<<<<<<<<<<<<
   17812             :  *         for i in range(extent):
   17813             :  *             memcpy(data, item, itemsize)
   17814             :  */
   17815           0 :     goto __pyx_L3;
   17816             :   }
   17817             : 
   17818             :   /* "View.MemoryView":1412
   17819             :  *             data += stride
   17820             :  *     else:
   17821             :  *         for i in range(extent):             # <<<<<<<<<<<<<<
   17822             :  *             _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item)
   17823             :  *             data += stride
   17824             :  */
   17825             :   /*else*/ {
   17826             :     __pyx_t_2 = __pyx_v_extent;
   17827             :     __pyx_t_3 = __pyx_t_2;
   17828           0 :     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
   17829           0 :       __pyx_v_i = __pyx_t_4;
   17830             : 
   17831             :       /* "View.MemoryView":1413
   17832             :  *     else:
   17833             :  *         for i in range(extent):
   17834             :  *             _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item)             # <<<<<<<<<<<<<<
   17835             :  *             data += stride
   17836             :  * 
   17837             :  */
   17838           0 :       __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item);
   17839             : 
   17840             :       /* "View.MemoryView":1414
   17841             :  *         for i in range(extent):
   17842             :  *             _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item)
   17843             :  *             data += stride             # <<<<<<<<<<<<<<
   17844             :  * 
   17845             :  * 
   17846             :  */
   17847           0 :       __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
   17848             :     }
   17849             :   }
   17850           0 :   __pyx_L3:;
   17851             : 
   17852             :   /* "View.MemoryView":1400
   17853             :  * 
   17854             :  * @cname('__pyx_memoryview__slice_assign_scalar')
   17855             :  * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
   17856             :  *                               Py_ssize_t *strides, int ndim,
   17857             :  *                               size_t itemsize, void *item) noexcept nogil:
   17858             :  */
   17859             : 
   17860             :   /* function exit code */
   17861           0 : }
   17862             : 
   17863             : /* "(tree fragment)":1
   17864             :  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
   17865             :  *     cdef object __pyx_PickleError
   17866             :  *     cdef object __pyx_result
   17867             :  */
   17868             : 
   17869             : /* Python wrapper */
   17870             : static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, 
   17871             : #if CYTHON_METH_FASTCALL
   17872             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   17873             : #else
   17874             : PyObject *__pyx_args, PyObject *__pyx_kwds
   17875             : #endif
   17876             : ); /*proto*/
   17877             : static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
   17878           0 : static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, 
   17879             : #if CYTHON_METH_FASTCALL
   17880             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   17881             : #else
   17882             : PyObject *__pyx_args, PyObject *__pyx_kwds
   17883             : #endif
   17884             : ) {
   17885           0 :   PyObject *__pyx_v___pyx_type = 0;
   17886           0 :   long __pyx_v___pyx_checksum;
   17887           0 :   PyObject *__pyx_v___pyx_state = 0;
   17888             :   #if !CYTHON_METH_FASTCALL
   17889             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   17890             :   #endif
   17891           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   17892           0 :   PyObject* values[3] = {0,0,0};
   17893           0 :   int __pyx_lineno = 0;
   17894           0 :   const char *__pyx_filename = NULL;
   17895           0 :   int __pyx_clineno = 0;
   17896           0 :   PyObject *__pyx_r = 0;
   17897             :   __Pyx_RefNannyDeclarations
   17898           0 :   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0);
   17899             :   #if !CYTHON_METH_FASTCALL
   17900             :   #if CYTHON_ASSUME_SAFE_MACROS
   17901             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   17902             :   #else
   17903             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   17904             :   #endif
   17905             :   #endif
   17906           0 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   17907             :   {
   17908           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
   17909           0 :     if (__pyx_kwds) {
   17910           0 :       Py_ssize_t kw_args;
   17911           0 :       switch (__pyx_nargs) {
   17912           0 :         case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
   17913           0 :         CYTHON_FALLTHROUGH;
   17914           0 :         case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
   17915           0 :         CYTHON_FALLTHROUGH;
   17916           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   17917           0 :         CYTHON_FALLTHROUGH;
   17918           0 :         case  0: break;
   17919           0 :         default: goto __pyx_L5_argtuple_error;
   17920             :       }
   17921           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
   17922           0 :       switch (__pyx_nargs) {
   17923           0 :         case  0:
   17924           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
   17925           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
   17926           0 :           kw_args--;
   17927             :         }
   17928           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
   17929           0 :         else goto __pyx_L5_argtuple_error;
   17930           0 :         CYTHON_FALLTHROUGH;
   17931             :         case  1:
   17932           0 :         if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
   17933           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
   17934           0 :           kw_args--;
   17935             :         }
   17936           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
   17937             :         else {
   17938           0 :           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
   17939             :         }
   17940           0 :         CYTHON_FALLTHROUGH;
   17941             :         case  2:
   17942           0 :         if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
   17943           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
   17944           0 :           kw_args--;
   17945             :         }
   17946           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
   17947             :         else {
   17948           0 :           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
   17949             :         }
   17950             :       }
   17951           0 :       if (unlikely(kw_args > 0)) {
   17952           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   17953           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
   17954             :       }
   17955           0 :     } else if (unlikely(__pyx_nargs != 3)) {
   17956           0 :       goto __pyx_L5_argtuple_error;
   17957             :     } else {
   17958           0 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   17959           0 :       values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
   17960           0 :       values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
   17961             :     }
   17962           0 :     __pyx_v___pyx_type = values[0];
   17963           0 :     __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
   17964           0 :     __pyx_v___pyx_state = values[2];
   17965             :   }
   17966           0 :   goto __pyx_L6_skip;
   17967           0 :   __pyx_L5_argtuple_error:;
   17968           0 :   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error)
   17969           0 :   __pyx_L6_skip:;
   17970           0 :   goto __pyx_L4_argument_unpacking_done;
   17971           0 :   __pyx_L3_error:;
   17972             :   {
   17973           0 :     Py_ssize_t __pyx_temp;
   17974           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   17975             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   17976             :     }
   17977             :   }
   17978           0 :   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
   17979           0 :   __Pyx_RefNannyFinishContext();
   17980           0 :   return NULL;
   17981           0 :   __pyx_L4_argument_unpacking_done:;
   17982           0 :   __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
   17983             : 
   17984             :   /* function exit code */
   17985             :   {
   17986           0 :     Py_ssize_t __pyx_temp;
   17987           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   17988             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   17989             :     }
   17990             :   }
   17991             :   __Pyx_RefNannyFinishContext();
   17992             :   return __pyx_r;
   17993             : }
   17994             : 
   17995           0 : static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
   17996           0 :   PyObject *__pyx_v___pyx_PickleError = 0;
   17997           0 :   PyObject *__pyx_v___pyx_result = 0;
   17998           0 :   PyObject *__pyx_r = NULL;
   17999             :   __Pyx_RefNannyDeclarations
   18000           0 :   PyObject *__pyx_t_1 = NULL;
   18001           0 :   int __pyx_t_2;
   18002           0 :   PyObject *__pyx_t_3 = NULL;
   18003           0 :   PyObject *__pyx_t_4 = NULL;
   18004           0 :   unsigned int __pyx_t_5;
   18005           0 :   int __pyx_lineno = 0;
   18006           0 :   const char *__pyx_filename = NULL;
   18007           0 :   int __pyx_clineno = 0;
   18008           0 :   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 1);
   18009             : 
   18010             :   /* "(tree fragment)":4
   18011             :  *     cdef object __pyx_PickleError
   18012             :  *     cdef object __pyx_result
   18013             :  *     if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931):             # <<<<<<<<<<<<<<
   18014             :  *         from pickle import PickleError as __pyx_PickleError
   18015             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18016             :  */
   18017           0 :   __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
   18018           0 :   __Pyx_GOTREF(__pyx_t_1);
   18019           0 :   __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error)
   18020           0 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18021           0 :   if (__pyx_t_2) {
   18022             : 
   18023             :     /* "(tree fragment)":5
   18024             :  *     cdef object __pyx_result
   18025             :  *     if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931):
   18026             :  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
   18027             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18028             :  *     __pyx_result = Enum.__new__(__pyx_type)
   18029             :  */
   18030           0 :     __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
   18031           0 :     __Pyx_GOTREF(__pyx_t_1);
   18032           0 :     __Pyx_INCREF(__pyx_n_s_PickleError);
   18033           0 :     __Pyx_GIVEREF(__pyx_n_s_PickleError);
   18034           0 :     if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error);
   18035           0 :     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
   18036           0 :     __Pyx_GOTREF(__pyx_t_3);
   18037           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18038           0 :     __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
   18039           0 :     __Pyx_GOTREF(__pyx_t_1);
   18040           0 :     __Pyx_INCREF(__pyx_t_1);
   18041           0 :     __pyx_v___pyx_PickleError = __pyx_t_1;
   18042           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18043           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   18044             : 
   18045             :     /* "(tree fragment)":6
   18046             :  *     if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931):
   18047             :  *         from pickle import PickleError as __pyx_PickleError
   18048             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum             # <<<<<<<<<<<<<<
   18049             :  *     __pyx_result = Enum.__new__(__pyx_type)
   18050             :  *     if __pyx_state is not None:
   18051             :  */
   18052           0 :     __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
   18053           0 :     __Pyx_GOTREF(__pyx_t_3);
   18054           0 :     __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
   18055           0 :     __Pyx_GOTREF(__pyx_t_1);
   18056           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   18057           0 :     __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
   18058           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18059           0 :     __PYX_ERR(1, 6, __pyx_L1_error)
   18060             : 
   18061             :     /* "(tree fragment)":4
   18062             :  *     cdef object __pyx_PickleError
   18063             :  *     cdef object __pyx_result
   18064             :  *     if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931):             # <<<<<<<<<<<<<<
   18065             :  *         from pickle import PickleError as __pyx_PickleError
   18066             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18067             :  */
   18068             :   }
   18069             : 
   18070             :   /* "(tree fragment)":7
   18071             :  *         from pickle import PickleError as __pyx_PickleError
   18072             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18073             :  *     __pyx_result = Enum.__new__(__pyx_type)             # <<<<<<<<<<<<<<
   18074             :  *     if __pyx_state is not None:
   18075             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18076             :  */
   18077           0 :   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
   18078           0 :   __Pyx_GOTREF(__pyx_t_3);
   18079           0 :   __pyx_t_4 = NULL;
   18080           0 :   __pyx_t_5 = 0;
   18081             :   #if CYTHON_UNPACK_METHODS
   18082           0 :   if (likely(PyMethod_Check(__pyx_t_3))) {
   18083           0 :     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
   18084           0 :     if (likely(__pyx_t_4)) {
   18085           0 :       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
   18086           0 :       __Pyx_INCREF(__pyx_t_4);
   18087           0 :       __Pyx_INCREF(function);
   18088           0 :       __Pyx_DECREF_SET(__pyx_t_3, function);
   18089             :       __pyx_t_5 = 1;
   18090             :     }
   18091             :   }
   18092             :   #endif
   18093             :   {
   18094           0 :     PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
   18095           0 :     __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
   18096           0 :     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   18097           0 :     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
   18098           0 :     __Pyx_GOTREF(__pyx_t_1);
   18099           0 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   18100             :   }
   18101           0 :   __pyx_v___pyx_result = __pyx_t_1;
   18102           0 :   __pyx_t_1 = 0;
   18103             : 
   18104             :   /* "(tree fragment)":8
   18105             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18106             :  *     __pyx_result = Enum.__new__(__pyx_type)
   18107             :  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
   18108             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18109             :  *     return __pyx_result
   18110             :  */
   18111           0 :   __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
   18112           0 :   if (__pyx_t_2) {
   18113             : 
   18114             :     /* "(tree fragment)":9
   18115             :  *     __pyx_result = Enum.__new__(__pyx_type)
   18116             :  *     if __pyx_state is not None:
   18117             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
   18118             :  *     return __pyx_result
   18119             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
   18120             :  */
   18121           0 :     if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error)
   18122           0 :     __pyx_t_1 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
   18123           0 :     __Pyx_GOTREF(__pyx_t_1);
   18124           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18125             : 
   18126             :     /* "(tree fragment)":8
   18127             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   18128             :  *     __pyx_result = Enum.__new__(__pyx_type)
   18129             :  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
   18130             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18131             :  *     return __pyx_result
   18132             :  */
   18133             :   }
   18134             : 
   18135             :   /* "(tree fragment)":10
   18136             :  *     if __pyx_state is not None:
   18137             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18138             :  *     return __pyx_result             # <<<<<<<<<<<<<<
   18139             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
   18140             :  *     __pyx_result.name = __pyx_state[0]
   18141             :  */
   18142           0 :   __Pyx_XDECREF(__pyx_r);
   18143           0 :   __Pyx_INCREF(__pyx_v___pyx_result);
   18144           0 :   __pyx_r = __pyx_v___pyx_result;
   18145           0 :   goto __pyx_L0;
   18146             : 
   18147             :   /* "(tree fragment)":1
   18148             :  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
   18149             :  *     cdef object __pyx_PickleError
   18150             :  *     cdef object __pyx_result
   18151             :  */
   18152             : 
   18153             :   /* function exit code */
   18154           0 :   __pyx_L1_error:;
   18155           0 :   __Pyx_XDECREF(__pyx_t_1);
   18156           0 :   __Pyx_XDECREF(__pyx_t_3);
   18157           0 :   __Pyx_XDECREF(__pyx_t_4);
   18158           0 :   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
   18159           0 :   __pyx_r = NULL;
   18160           0 :   __pyx_L0:;
   18161           0 :   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
   18162           0 :   __Pyx_XDECREF(__pyx_v___pyx_result);
   18163           0 :   __Pyx_XGIVEREF(__pyx_r);
   18164           0 :   __Pyx_RefNannyFinishContext();
   18165           0 :   return __pyx_r;
   18166             : }
   18167             : 
   18168             : /* "(tree fragment)":11
   18169             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18170             :  *     return __pyx_result
   18171             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
   18172             :  *     __pyx_result.name = __pyx_state[0]
   18173             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
   18174             :  */
   18175             : 
   18176           0 : static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
   18177           0 :   PyObject *__pyx_r = NULL;
   18178             :   __Pyx_RefNannyDeclarations
   18179           0 :   PyObject *__pyx_t_1 = NULL;
   18180           0 :   int __pyx_t_2;
   18181           0 :   Py_ssize_t __pyx_t_3;
   18182           0 :   int __pyx_t_4;
   18183           0 :   PyObject *__pyx_t_5 = NULL;
   18184           0 :   PyObject *__pyx_t_6 = NULL;
   18185           0 :   PyObject *__pyx_t_7 = NULL;
   18186           0 :   unsigned int __pyx_t_8;
   18187           0 :   int __pyx_lineno = 0;
   18188           0 :   const char *__pyx_filename = NULL;
   18189           0 :   int __pyx_clineno = 0;
   18190           0 :   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 1);
   18191             : 
   18192             :   /* "(tree fragment)":12
   18193             :  *     return __pyx_result
   18194             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
   18195             :  *     __pyx_result.name = __pyx_state[0]             # <<<<<<<<<<<<<<
   18196             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
   18197             :  *         __pyx_result.__dict__.update(__pyx_state[1])
   18198             :  */
   18199           0 :   if (unlikely(__pyx_v___pyx_state == Py_None)) {
   18200           0 :     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   18201           0 :     __PYX_ERR(1, 12, __pyx_L1_error)
   18202             :   }
   18203           0 :   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
   18204           0 :   __Pyx_GOTREF(__pyx_t_1);
   18205           0 :   __Pyx_GIVEREF(__pyx_t_1);
   18206           0 :   __Pyx_GOTREF(__pyx_v___pyx_result->name);
   18207           0 :   __Pyx_DECREF(__pyx_v___pyx_result->name);
   18208           0 :   __pyx_v___pyx_result->name = __pyx_t_1;
   18209           0 :   __pyx_t_1 = 0;
   18210             : 
   18211             :   /* "(tree fragment)":13
   18212             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
   18213             :  *     __pyx_result.name = __pyx_state[0]
   18214             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
   18215             :  *         __pyx_result.__dict__.update(__pyx_state[1])
   18216             :  */
   18217           0 :   if (unlikely(__pyx_v___pyx_state == Py_None)) {
   18218             :     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
   18219             :     __PYX_ERR(1, 13, __pyx_L1_error)
   18220             :   }
   18221           0 :   __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
   18222           0 :   __pyx_t_4 = (__pyx_t_3 > 1);
   18223           0 :   if (__pyx_t_4) {
   18224           0 :   } else {
   18225           0 :     __pyx_t_2 = __pyx_t_4;
   18226           0 :     goto __pyx_L4_bool_binop_done;
   18227             :   }
   18228           0 :   __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
   18229             :   __pyx_t_2 = __pyx_t_4;
   18230           0 :   __pyx_L4_bool_binop_done:;
   18231           0 :   if (__pyx_t_2) {
   18232             : 
   18233             :     /* "(tree fragment)":14
   18234             :  *     __pyx_result.name = __pyx_state[0]
   18235             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
   18236             :  *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
   18237             :  */
   18238           0 :     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
   18239           0 :     __Pyx_GOTREF(__pyx_t_5);
   18240           0 :     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
   18241           0 :     __Pyx_GOTREF(__pyx_t_6);
   18242           0 :     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   18243           0 :     if (unlikely(__pyx_v___pyx_state == Py_None)) {
   18244             :       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   18245             :       __PYX_ERR(1, 14, __pyx_L1_error)
   18246             :     }
   18247           0 :     __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error)
   18248           0 :     __Pyx_GOTREF(__pyx_t_5);
   18249           0 :     __pyx_t_7 = NULL;
   18250           0 :     __pyx_t_8 = 0;
   18251             :     #if CYTHON_UNPACK_METHODS
   18252           0 :     if (likely(PyMethod_Check(__pyx_t_6))) {
   18253           0 :       __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
   18254           0 :       if (likely(__pyx_t_7)) {
   18255           0 :         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
   18256           0 :         __Pyx_INCREF(__pyx_t_7);
   18257           0 :         __Pyx_INCREF(function);
   18258           0 :         __Pyx_DECREF_SET(__pyx_t_6, function);
   18259             :         __pyx_t_8 = 1;
   18260             :       }
   18261             :     }
   18262             :     #endif
   18263             :     {
   18264           0 :       PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
   18265           0 :       __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
   18266           0 :       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
   18267           0 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   18268           0 :       if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
   18269           0 :       __Pyx_GOTREF(__pyx_t_1);
   18270           0 :       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   18271             :     }
   18272           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   18273             : 
   18274             :     /* "(tree fragment)":13
   18275             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
   18276             :  *     __pyx_result.name = __pyx_state[0]
   18277             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
   18278             :  *         __pyx_result.__dict__.update(__pyx_state[1])
   18279             :  */
   18280             :   }
   18281             : 
   18282             :   /* "(tree fragment)":11
   18283             :  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
   18284             :  *     return __pyx_result
   18285             :  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
   18286             :  *     __pyx_result.name = __pyx_state[0]
   18287             :  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
   18288             :  */
   18289             : 
   18290             :   /* function exit code */
   18291           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   18292           0 :   goto __pyx_L0;
   18293           0 :   __pyx_L1_error:;
   18294           0 :   __Pyx_XDECREF(__pyx_t_1);
   18295           0 :   __Pyx_XDECREF(__pyx_t_5);
   18296           0 :   __Pyx_XDECREF(__pyx_t_6);
   18297           0 :   __Pyx_XDECREF(__pyx_t_7);
   18298           0 :   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
   18299           0 :   __pyx_r = 0;
   18300           0 :   __pyx_L0:;
   18301           0 :   __Pyx_XGIVEREF(__pyx_r);
   18302           0 :   __Pyx_RefNannyFinishContext();
   18303           0 :   return __pyx_r;
   18304             : }
   18305             : 
   18306             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":286
   18307             :  * 
   18308             :  *         @property
   18309             :  *         cdef inline npy_intp itemsize(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18310             :  *             return PyDataType_ELSIZE(self)
   18311             :  * 
   18312             :  */
   18313             : 
   18314             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) {
   18315             :   npy_intp __pyx_r;
   18316             : 
   18317             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287
   18318             :  *         @property
   18319             :  *         cdef inline npy_intp itemsize(self) noexcept nogil:
   18320             :  *             return PyDataType_ELSIZE(self)             # <<<<<<<<<<<<<<
   18321             :  * 
   18322             :  *         @property
   18323             :  */
   18324             :   __pyx_r = PyDataType_ELSIZE(__pyx_v_self);
   18325             :   goto __pyx_L0;
   18326             : 
   18327             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":286
   18328             :  * 
   18329             :  *         @property
   18330             :  *         cdef inline npy_intp itemsize(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18331             :  *             return PyDataType_ELSIZE(self)
   18332             :  * 
   18333             :  */
   18334             : 
   18335             :   /* function exit code */
   18336             :   __pyx_L0:;
   18337             :   return __pyx_r;
   18338             : }
   18339             : 
   18340             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290
   18341             :  * 
   18342             :  *         @property
   18343             :  *         cdef inline npy_intp alignment(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18344             :  *             return PyDataType_ALIGNMENT(self)
   18345             :  * 
   18346             :  */
   18347             : 
   18348             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) {
   18349             :   npy_intp __pyx_r;
   18350             : 
   18351             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":291
   18352             :  *         @property
   18353             :  *         cdef inline npy_intp alignment(self) noexcept nogil:
   18354             :  *             return PyDataType_ALIGNMENT(self)             # <<<<<<<<<<<<<<
   18355             :  * 
   18356             :  *         # Use fields/names with care as they may be NULL.  You must check
   18357             :  */
   18358             :   __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self);
   18359             :   goto __pyx_L0;
   18360             : 
   18361             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290
   18362             :  * 
   18363             :  *         @property
   18364             :  *         cdef inline npy_intp alignment(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18365             :  *             return PyDataType_ALIGNMENT(self)
   18366             :  * 
   18367             :  */
   18368             : 
   18369             :   /* function exit code */
   18370             :   __pyx_L0:;
   18371             :   return __pyx_r;
   18372             : }
   18373             : 
   18374             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":296
   18375             :  *         # for this using PyDataType_HASFIELDS.
   18376             :  *         @property
   18377             :  *         cdef inline object fields(self):             # <<<<<<<<<<<<<<
   18378             :  *             return <object>PyDataType_FIELDS(self)
   18379             :  * 
   18380             :  */
   18381             : 
   18382             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Descr *__pyx_v_self) {
   18383             :   PyObject *__pyx_r = NULL;
   18384             :   __Pyx_RefNannyDeclarations
   18385             :   PyObject *__pyx_t_1;
   18386             :   __Pyx_RefNannySetupContext("fields", 1);
   18387             : 
   18388             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
   18389             :  *         @property
   18390             :  *         cdef inline object fields(self):
   18391             :  *             return <object>PyDataType_FIELDS(self)             # <<<<<<<<<<<<<<
   18392             :  * 
   18393             :  *         @property
   18394             :  */
   18395             :   __Pyx_XDECREF(__pyx_r);
   18396             :   __pyx_t_1 = PyDataType_FIELDS(__pyx_v_self);
   18397             :   __Pyx_INCREF(((PyObject *)__pyx_t_1));
   18398             :   __pyx_r = ((PyObject *)__pyx_t_1);
   18399             :   goto __pyx_L0;
   18400             : 
   18401             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":296
   18402             :  *         # for this using PyDataType_HASFIELDS.
   18403             :  *         @property
   18404             :  *         cdef inline object fields(self):             # <<<<<<<<<<<<<<
   18405             :  *             return <object>PyDataType_FIELDS(self)
   18406             :  * 
   18407             :  */
   18408             : 
   18409             :   /* function exit code */
   18410             :   __pyx_L0:;
   18411             :   __Pyx_XGIVEREF(__pyx_r);
   18412             :   __Pyx_RefNannyFinishContext();
   18413             :   return __pyx_r;
   18414             : }
   18415             : 
   18416             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
   18417             :  * 
   18418             :  *         @property
   18419             :  *         cdef inline tuple names(self):             # <<<<<<<<<<<<<<
   18420             :  *             return <tuple>PyDataType_NAMES(self)
   18421             :  * 
   18422             :  */
   18423             : 
   18424             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr *__pyx_v_self) {
   18425             :   PyObject *__pyx_r = NULL;
   18426             :   __Pyx_RefNannyDeclarations
   18427             :   PyObject *__pyx_t_1;
   18428             :   __Pyx_RefNannySetupContext("names", 1);
   18429             : 
   18430             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":301
   18431             :  *         @property
   18432             :  *         cdef inline tuple names(self):
   18433             :  *             return <tuple>PyDataType_NAMES(self)             # <<<<<<<<<<<<<<
   18434             :  * 
   18435             :  *         # Use PyDataType_HASSUBARRAY to test whether this field is
   18436             :  */
   18437             :   __Pyx_XDECREF(__pyx_r);
   18438             :   __pyx_t_1 = PyDataType_NAMES(__pyx_v_self);
   18439             :   __Pyx_INCREF(((PyObject*)__pyx_t_1));
   18440             :   __pyx_r = ((PyObject*)__pyx_t_1);
   18441             :   goto __pyx_L0;
   18442             : 
   18443             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
   18444             :  * 
   18445             :  *         @property
   18446             :  *         cdef inline tuple names(self):             # <<<<<<<<<<<<<<
   18447             :  *             return <tuple>PyDataType_NAMES(self)
   18448             :  * 
   18449             :  */
   18450             : 
   18451             :   /* function exit code */
   18452             :   __pyx_L0:;
   18453             :   __Pyx_XGIVEREF(__pyx_r);
   18454             :   __Pyx_RefNannyFinishContext();
   18455             :   return __pyx_r;
   18456             : }
   18457             : 
   18458             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
   18459             :  *         # this field via the inline helper method PyDataType_SHAPE.
   18460             :  *         @property
   18461             :  *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18462             :  *             return PyDataType_SUBARRAY(self)
   18463             :  * 
   18464             :  */
   18465             : 
   18466             : static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) {
   18467             :   PyArray_ArrayDescr *__pyx_r;
   18468             : 
   18469             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308
   18470             :  *         @property
   18471             :  *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
   18472             :  *             return PyDataType_SUBARRAY(self)             # <<<<<<<<<<<<<<
   18473             :  * 
   18474             :  *         @property
   18475             :  */
   18476             :   __pyx_r = PyDataType_SUBARRAY(__pyx_v_self);
   18477             :   goto __pyx_L0;
   18478             : 
   18479             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
   18480             :  *         # this field via the inline helper method PyDataType_SHAPE.
   18481             :  *         @property
   18482             :  *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18483             :  *             return PyDataType_SUBARRAY(self)
   18484             :  * 
   18485             :  */
   18486             : 
   18487             :   /* function exit code */
   18488             :   __pyx_L0:;
   18489             :   return __pyx_r;
   18490             : }
   18491             : 
   18492             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":311
   18493             :  * 
   18494             :  *         @property
   18495             :  *         cdef inline npy_uint64 flags(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18496             :  *             """The data types flags."""
   18497             :  *             return PyDataType_FLAGS(self)
   18498             :  */
   18499             : 
   18500             : static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) {
   18501             :   npy_uint64 __pyx_r;
   18502             : 
   18503             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":313
   18504             :  *         cdef inline npy_uint64 flags(self) noexcept nogil:
   18505             :  *             """The data types flags."""
   18506             :  *             return PyDataType_FLAGS(self)             # <<<<<<<<<<<<<<
   18507             :  * 
   18508             :  * 
   18509             :  */
   18510             :   __pyx_r = PyDataType_FLAGS(__pyx_v_self);
   18511             :   goto __pyx_L0;
   18512             : 
   18513             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":311
   18514             :  * 
   18515             :  *         @property
   18516             :  *         cdef inline npy_uint64 flags(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18517             :  *             """The data types flags."""
   18518             :  *             return PyDataType_FLAGS(self)
   18519             :  */
   18520             : 
   18521             :   /* function exit code */
   18522             :   __pyx_L0:;
   18523             :   return __pyx_r;
   18524             : }
   18525             : 
   18526             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323
   18527             :  * 
   18528             :  *         @property
   18529             :  *         cdef inline int numiter(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18530             :  *             """The number of arrays that need to be broadcast to the same shape."""
   18531             :  *             return PyArray_MultiIter_NUMITER(self)
   18532             :  */
   18533             : 
   18534             : static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) {
   18535             :   int __pyx_r;
   18536             : 
   18537             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":325
   18538             :  *         cdef inline int numiter(self) noexcept nogil:
   18539             :  *             """The number of arrays that need to be broadcast to the same shape."""
   18540             :  *             return PyArray_MultiIter_NUMITER(self)             # <<<<<<<<<<<<<<
   18541             :  * 
   18542             :  *         @property
   18543             :  */
   18544             :   __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self);
   18545             :   goto __pyx_L0;
   18546             : 
   18547             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323
   18548             :  * 
   18549             :  *         @property
   18550             :  *         cdef inline int numiter(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18551             :  *             """The number of arrays that need to be broadcast to the same shape."""
   18552             :  *             return PyArray_MultiIter_NUMITER(self)
   18553             :  */
   18554             : 
   18555             :   /* function exit code */
   18556             :   __pyx_L0:;
   18557             :   return __pyx_r;
   18558             : }
   18559             : 
   18560             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328
   18561             :  * 
   18562             :  *         @property
   18563             :  *         cdef inline npy_intp size(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18564             :  *             """The total broadcasted size."""
   18565             :  *             return PyArray_MultiIter_SIZE(self)
   18566             :  */
   18567             : 
   18568             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) {
   18569             :   npy_intp __pyx_r;
   18570             : 
   18571             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":330
   18572             :  *         cdef inline npy_intp size(self) noexcept nogil:
   18573             :  *             """The total broadcasted size."""
   18574             :  *             return PyArray_MultiIter_SIZE(self)             # <<<<<<<<<<<<<<
   18575             :  * 
   18576             :  *         @property
   18577             :  */
   18578             :   __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self);
   18579             :   goto __pyx_L0;
   18580             : 
   18581             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328
   18582             :  * 
   18583             :  *         @property
   18584             :  *         cdef inline npy_intp size(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18585             :  *             """The total broadcasted size."""
   18586             :  *             return PyArray_MultiIter_SIZE(self)
   18587             :  */
   18588             : 
   18589             :   /* function exit code */
   18590             :   __pyx_L0:;
   18591             :   return __pyx_r;
   18592             : }
   18593             : 
   18594             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333
   18595             :  * 
   18596             :  *         @property
   18597             :  *         cdef inline npy_intp index(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18598             :  *             """The current (1-d) index into the broadcasted result."""
   18599             :  *             return PyArray_MultiIter_INDEX(self)
   18600             :  */
   18601             : 
   18602             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) {
   18603             :   npy_intp __pyx_r;
   18604             : 
   18605             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
   18606             :  *         cdef inline npy_intp index(self) noexcept nogil:
   18607             :  *             """The current (1-d) index into the broadcasted result."""
   18608             :  *             return PyArray_MultiIter_INDEX(self)             # <<<<<<<<<<<<<<
   18609             :  * 
   18610             :  *         @property
   18611             :  */
   18612             :   __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self);
   18613             :   goto __pyx_L0;
   18614             : 
   18615             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333
   18616             :  * 
   18617             :  *         @property
   18618             :  *         cdef inline npy_intp index(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18619             :  *             """The current (1-d) index into the broadcasted result."""
   18620             :  *             return PyArray_MultiIter_INDEX(self)
   18621             :  */
   18622             : 
   18623             :   /* function exit code */
   18624             :   __pyx_L0:;
   18625             :   return __pyx_r;
   18626             : }
   18627             : 
   18628             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":338
   18629             :  * 
   18630             :  *         @property
   18631             :  *         cdef inline int nd(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18632             :  *             """The number of dimensions in the broadcasted result."""
   18633             :  *             return PyArray_MultiIter_NDIM(self)
   18634             :  */
   18635             : 
   18636             : static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) {
   18637             :   int __pyx_r;
   18638             : 
   18639             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340
   18640             :  *         cdef inline int nd(self) noexcept nogil:
   18641             :  *             """The number of dimensions in the broadcasted result."""
   18642             :  *             return PyArray_MultiIter_NDIM(self)             # <<<<<<<<<<<<<<
   18643             :  * 
   18644             :  *         @property
   18645             :  */
   18646             :   __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self);
   18647             :   goto __pyx_L0;
   18648             : 
   18649             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":338
   18650             :  * 
   18651             :  *         @property
   18652             :  *         cdef inline int nd(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18653             :  *             """The number of dimensions in the broadcasted result."""
   18654             :  *             return PyArray_MultiIter_NDIM(self)
   18655             :  */
   18656             : 
   18657             :   /* function exit code */
   18658             :   __pyx_L0:;
   18659             :   return __pyx_r;
   18660             : }
   18661             : 
   18662             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":343
   18663             :  * 
   18664             :  *         @property
   18665             :  *         cdef inline npy_intp* dimensions(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18666             :  *             """The shape of the broadcasted result."""
   18667             :  *             return PyArray_MultiIter_DIMS(self)
   18668             :  */
   18669             : 
   18670             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) {
   18671             :   npy_intp *__pyx_r;
   18672             : 
   18673             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
   18674             :  *         cdef inline npy_intp* dimensions(self) noexcept nogil:
   18675             :  *             """The shape of the broadcasted result."""
   18676             :  *             return PyArray_MultiIter_DIMS(self)             # <<<<<<<<<<<<<<
   18677             :  * 
   18678             :  *         @property
   18679             :  */
   18680             :   __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self);
   18681             :   goto __pyx_L0;
   18682             : 
   18683             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":343
   18684             :  * 
   18685             :  *         @property
   18686             :  *         cdef inline npy_intp* dimensions(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18687             :  *             """The shape of the broadcasted result."""
   18688             :  *             return PyArray_MultiIter_DIMS(self)
   18689             :  */
   18690             : 
   18691             :   /* function exit code */
   18692             :   __pyx_L0:;
   18693             :   return __pyx_r;
   18694             : }
   18695             : 
   18696             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348
   18697             :  * 
   18698             :  *         @property
   18699             :  *         cdef inline void** iters(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18700             :  *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
   18701             :  *             On return, the iterators are adjusted for broadcasting."""
   18702             :  */
   18703             : 
   18704             : static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) {
   18705             :   void **__pyx_r;
   18706             : 
   18707             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
   18708             :  *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
   18709             :  *             On return, the iterators are adjusted for broadcasting."""
   18710             :  *             return PyArray_MultiIter_ITERS(self)             # <<<<<<<<<<<<<<
   18711             :  * 
   18712             :  * 
   18713             :  */
   18714             :   __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self);
   18715             :   goto __pyx_L0;
   18716             : 
   18717             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348
   18718             :  * 
   18719             :  *         @property
   18720             :  *         cdef inline void** iters(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18721             :  *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
   18722             :  *             On return, the iterators are adjusted for broadcasting."""
   18723             :  */
   18724             : 
   18725             :   /* function exit code */
   18726             :   __pyx_L0:;
   18727             :   return __pyx_r;
   18728             : }
   18729             : 
   18730             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
   18731             :  * 
   18732             :  *         @property
   18733             :  *         cdef inline PyObject* base(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18734             :  *             """Returns a borrowed reference to the object owning the data/memory.
   18735             :  *             """
   18736             :  */
   18737             : 
   18738             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) {
   18739             :   PyObject *__pyx_r;
   18740             : 
   18741             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369
   18742             :  *             """Returns a borrowed reference to the object owning the data/memory.
   18743             :  *             """
   18744             :  *             return PyArray_BASE(self)             # <<<<<<<<<<<<<<
   18745             :  * 
   18746             :  *         @property
   18747             :  */
   18748             :   __pyx_r = PyArray_BASE(__pyx_v_self);
   18749             :   goto __pyx_L0;
   18750             : 
   18751             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
   18752             :  * 
   18753             :  *         @property
   18754             :  *         cdef inline PyObject* base(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18755             :  *             """Returns a borrowed reference to the object owning the data/memory.
   18756             :  *             """
   18757             :  */
   18758             : 
   18759             :   /* function exit code */
   18760             :   __pyx_L0:;
   18761             :   return __pyx_r;
   18762             : }
   18763             : 
   18764             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
   18765             :  * 
   18766             :  *         @property
   18767             :  *         cdef inline dtype descr(self):             # <<<<<<<<<<<<<<
   18768             :  *             """Returns an owned reference to the dtype of the array.
   18769             :  *             """
   18770             :  */
   18771             : 
   18772             : static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self) {
   18773             :   PyArray_Descr *__pyx_r = NULL;
   18774             :   __Pyx_RefNannyDeclarations
   18775             :   PyArray_Descr *__pyx_t_1;
   18776             :   __Pyx_RefNannySetupContext("descr", 1);
   18777             : 
   18778             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":375
   18779             :  *             """Returns an owned reference to the dtype of the array.
   18780             :  *             """
   18781             :  *             return <dtype>PyArray_DESCR(self)             # <<<<<<<<<<<<<<
   18782             :  * 
   18783             :  *         @property
   18784             :  */
   18785             :   __Pyx_XDECREF((PyObject *)__pyx_r);
   18786             :   __pyx_t_1 = PyArray_DESCR(__pyx_v_self);
   18787             :   __Pyx_INCREF((PyObject *)((PyArray_Descr *)__pyx_t_1));
   18788             :   __pyx_r = ((PyArray_Descr *)__pyx_t_1);
   18789             :   goto __pyx_L0;
   18790             : 
   18791             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
   18792             :  * 
   18793             :  *         @property
   18794             :  *         cdef inline dtype descr(self):             # <<<<<<<<<<<<<<
   18795             :  *             """Returns an owned reference to the dtype of the array.
   18796             :  *             """
   18797             :  */
   18798             : 
   18799             :   /* function exit code */
   18800             :   __pyx_L0:;
   18801             :   __Pyx_XGIVEREF((PyObject *)__pyx_r);
   18802             :   __Pyx_RefNannyFinishContext();
   18803             :   return __pyx_r;
   18804             : }
   18805             : 
   18806             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":378
   18807             :  * 
   18808             :  *         @property
   18809             :  *         cdef inline int ndim(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18810             :  *             """Returns the number of dimensions in the array.
   18811             :  *             """
   18812             :  */
   18813             : 
   18814             : static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) {
   18815             :   int __pyx_r;
   18816             : 
   18817             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
   18818             :  *             """Returns the number of dimensions in the array.
   18819             :  *             """
   18820             :  *             return PyArray_NDIM(self)             # <<<<<<<<<<<<<<
   18821             :  * 
   18822             :  *         @property
   18823             :  */
   18824             :   __pyx_r = PyArray_NDIM(__pyx_v_self);
   18825             :   goto __pyx_L0;
   18826             : 
   18827             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":378
   18828             :  * 
   18829             :  *         @property
   18830             :  *         cdef inline int ndim(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18831             :  *             """Returns the number of dimensions in the array.
   18832             :  *             """
   18833             :  */
   18834             : 
   18835             :   /* function exit code */
   18836             :   __pyx_L0:;
   18837             :   return __pyx_r;
   18838             : }
   18839             : 
   18840             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":384
   18841             :  * 
   18842             :  *         @property
   18843             :  *         cdef inline npy_intp *shape(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18844             :  *             """Returns a pointer to the dimensions/shape of the array.
   18845             :  *             The number of elements matches the number of dimensions of the array (ndim).
   18846             :  */
   18847             : 
   18848             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) {
   18849             :   npy_intp *__pyx_r;
   18850             : 
   18851             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":389
   18852             :  *             Can return NULL for 0-dimensional arrays.
   18853             :  *             """
   18854             :  *             return PyArray_DIMS(self)             # <<<<<<<<<<<<<<
   18855             :  * 
   18856             :  *         @property
   18857             :  */
   18858             :   __pyx_r = PyArray_DIMS(__pyx_v_self);
   18859             :   goto __pyx_L0;
   18860             : 
   18861             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":384
   18862             :  * 
   18863             :  *         @property
   18864             :  *         cdef inline npy_intp *shape(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18865             :  *             """Returns a pointer to the dimensions/shape of the array.
   18866             :  *             The number of elements matches the number of dimensions of the array (ndim).
   18867             :  */
   18868             : 
   18869             :   /* function exit code */
   18870             :   __pyx_L0:;
   18871             :   return __pyx_r;
   18872             : }
   18873             : 
   18874             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":392
   18875             :  * 
   18876             :  *         @property
   18877             :  *         cdef inline npy_intp *strides(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18878             :  *             """Returns a pointer to the strides of the array.
   18879             :  *             The number of elements matches the number of dimensions of the array (ndim).
   18880             :  */
   18881             : 
   18882             : static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) {
   18883             :   npy_intp *__pyx_r;
   18884             : 
   18885             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":396
   18886             :  *             The number of elements matches the number of dimensions of the array (ndim).
   18887             :  *             """
   18888             :  *             return PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
   18889             :  * 
   18890             :  *         @property
   18891             :  */
   18892             :   __pyx_r = PyArray_STRIDES(__pyx_v_self);
   18893             :   goto __pyx_L0;
   18894             : 
   18895             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":392
   18896             :  * 
   18897             :  *         @property
   18898             :  *         cdef inline npy_intp *strides(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18899             :  *             """Returns a pointer to the strides of the array.
   18900             :  *             The number of elements matches the number of dimensions of the array (ndim).
   18901             :  */
   18902             : 
   18903             :   /* function exit code */
   18904             :   __pyx_L0:;
   18905             :   return __pyx_r;
   18906             : }
   18907             : 
   18908             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":399
   18909             :  * 
   18910             :  *         @property
   18911             :  *         cdef inline npy_intp size(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18912             :  *             """Returns the total size (in number of elements) of the array.
   18913             :  *             """
   18914             :  */
   18915             : 
   18916             : static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) {
   18917             :   npy_intp __pyx_r;
   18918             : 
   18919             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":402
   18920             :  *             """Returns the total size (in number of elements) of the array.
   18921             :  *             """
   18922             :  *             return PyArray_SIZE(self)             # <<<<<<<<<<<<<<
   18923             :  * 
   18924             :  *         @property
   18925             :  */
   18926             :   __pyx_r = PyArray_SIZE(__pyx_v_self);
   18927             :   goto __pyx_L0;
   18928             : 
   18929             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":399
   18930             :  * 
   18931             :  *         @property
   18932             :  *         cdef inline npy_intp size(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18933             :  *             """Returns the total size (in number of elements) of the array.
   18934             :  *             """
   18935             :  */
   18936             : 
   18937             :   /* function exit code */
   18938             :   __pyx_L0:;
   18939             :   return __pyx_r;
   18940             : }
   18941             : 
   18942             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":405
   18943             :  * 
   18944             :  *         @property
   18945             :  *         cdef inline char* data(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18946             :  *             """The pointer to the data buffer as a char*.
   18947             :  *             This is provided for legacy reasons to avoid direct struct field access.
   18948             :  */
   18949             : 
   18950             : static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) {
   18951             :   char *__pyx_r;
   18952             : 
   18953             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":411
   18954             :  *             of `PyArray_DATA()` instead, which returns a 'void*'.
   18955             :  *             """
   18956             :  *             return PyArray_BYTES(self)             # <<<<<<<<<<<<<<
   18957             :  * 
   18958             :  * 
   18959             :  */
   18960             :   __pyx_r = PyArray_BYTES(__pyx_v_self);
   18961             :   goto __pyx_L0;
   18962             : 
   18963             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":405
   18964             :  * 
   18965             :  *         @property
   18966             :  *         cdef inline char* data(self) noexcept nogil:             # <<<<<<<<<<<<<<
   18967             :  *             """The pointer to the data buffer as a char*.
   18968             :  *             This is provided for legacy reasons to avoid direct struct field access.
   18969             :  */
   18970             : 
   18971             :   /* function exit code */
   18972             :   __pyx_L0:;
   18973             :   return __pyx_r;
   18974             : }
   18975             : 
   18976             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
   18977             :  * ctypedef long double complex clongdouble_t
   18978             :  * 
   18979             :  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
   18980             :  *     return PyArray_MultiIterNew(1, <void*>a)
   18981             :  * 
   18982             :  */
   18983             : 
   18984             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
   18985             :   PyObject *__pyx_r = NULL;
   18986             :   __Pyx_RefNannyDeclarations
   18987             :   PyObject *__pyx_t_1 = NULL;
   18988             :   int __pyx_lineno = 0;
   18989             :   const char *__pyx_filename = NULL;
   18990             :   int __pyx_clineno = 0;
   18991             :   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 1);
   18992             : 
   18993             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
   18994             :  * 
   18995             :  * cdef inline object PyArray_MultiIterNew1(a):
   18996             :  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
   18997             :  * 
   18998             :  * cdef inline object PyArray_MultiIterNew2(a, b):
   18999             :  */
   19000             :   __Pyx_XDECREF(__pyx_r);
   19001             :   __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 807, __pyx_L1_error)
   19002             :   __Pyx_GOTREF(__pyx_t_1);
   19003             :   __pyx_r = __pyx_t_1;
   19004             :   __pyx_t_1 = 0;
   19005             :   goto __pyx_L0;
   19006             : 
   19007             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
   19008             :  * ctypedef long double complex clongdouble_t
   19009             :  * 
   19010             :  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
   19011             :  *     return PyArray_MultiIterNew(1, <void*>a)
   19012             :  * 
   19013             :  */
   19014             : 
   19015             :   /* function exit code */
   19016             :   __pyx_L1_error:;
   19017             :   __Pyx_XDECREF(__pyx_t_1);
   19018             :   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19019             :   __pyx_r = 0;
   19020             :   __pyx_L0:;
   19021             :   __Pyx_XGIVEREF(__pyx_r);
   19022             :   __Pyx_RefNannyFinishContext();
   19023             :   return __pyx_r;
   19024             : }
   19025             : 
   19026             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
   19027             :  *     return PyArray_MultiIterNew(1, <void*>a)
   19028             :  * 
   19029             :  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
   19030             :  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
   19031             :  * 
   19032             :  */
   19033             : 
   19034             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
   19035             :   PyObject *__pyx_r = NULL;
   19036             :   __Pyx_RefNannyDeclarations
   19037             :   PyObject *__pyx_t_1 = NULL;
   19038             :   int __pyx_lineno = 0;
   19039             :   const char *__pyx_filename = NULL;
   19040             :   int __pyx_clineno = 0;
   19041             :   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 1);
   19042             : 
   19043             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
   19044             :  * 
   19045             :  * cdef inline object PyArray_MultiIterNew2(a, b):
   19046             :  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
   19047             :  * 
   19048             :  * cdef inline object PyArray_MultiIterNew3(a, b, c):
   19049             :  */
   19050             :   __Pyx_XDECREF(__pyx_r);
   19051             :   __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 810, __pyx_L1_error)
   19052             :   __Pyx_GOTREF(__pyx_t_1);
   19053             :   __pyx_r = __pyx_t_1;
   19054             :   __pyx_t_1 = 0;
   19055             :   goto __pyx_L0;
   19056             : 
   19057             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
   19058             :  *     return PyArray_MultiIterNew(1, <void*>a)
   19059             :  * 
   19060             :  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
   19061             :  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
   19062             :  * 
   19063             :  */
   19064             : 
   19065             :   /* function exit code */
   19066             :   __pyx_L1_error:;
   19067             :   __Pyx_XDECREF(__pyx_t_1);
   19068             :   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19069             :   __pyx_r = 0;
   19070             :   __pyx_L0:;
   19071             :   __Pyx_XGIVEREF(__pyx_r);
   19072             :   __Pyx_RefNannyFinishContext();
   19073             :   return __pyx_r;
   19074             : }
   19075             : 
   19076             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":812
   19077             :  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
   19078             :  * 
   19079             :  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
   19080             :  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
   19081             :  * 
   19082             :  */
   19083             : 
   19084             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
   19085             :   PyObject *__pyx_r = NULL;
   19086             :   __Pyx_RefNannyDeclarations
   19087             :   PyObject *__pyx_t_1 = NULL;
   19088             :   int __pyx_lineno = 0;
   19089             :   const char *__pyx_filename = NULL;
   19090             :   int __pyx_clineno = 0;
   19091             :   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 1);
   19092             : 
   19093             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
   19094             :  * 
   19095             :  * cdef inline object PyArray_MultiIterNew3(a, b, c):
   19096             :  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
   19097             :  * 
   19098             :  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
   19099             :  */
   19100             :   __Pyx_XDECREF(__pyx_r);
   19101             :   __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 813, __pyx_L1_error)
   19102             :   __Pyx_GOTREF(__pyx_t_1);
   19103             :   __pyx_r = __pyx_t_1;
   19104             :   __pyx_t_1 = 0;
   19105             :   goto __pyx_L0;
   19106             : 
   19107             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":812
   19108             :  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
   19109             :  * 
   19110             :  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
   19111             :  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
   19112             :  * 
   19113             :  */
   19114             : 
   19115             :   /* function exit code */
   19116             :   __pyx_L1_error:;
   19117             :   __Pyx_XDECREF(__pyx_t_1);
   19118             :   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19119             :   __pyx_r = 0;
   19120             :   __pyx_L0:;
   19121             :   __Pyx_XGIVEREF(__pyx_r);
   19122             :   __Pyx_RefNannyFinishContext();
   19123             :   return __pyx_r;
   19124             : }
   19125             : 
   19126             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":815
   19127             :  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
   19128             :  * 
   19129             :  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
   19130             :  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
   19131             :  * 
   19132             :  */
   19133             : 
   19134             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
   19135             :   PyObject *__pyx_r = NULL;
   19136             :   __Pyx_RefNannyDeclarations
   19137             :   PyObject *__pyx_t_1 = NULL;
   19138             :   int __pyx_lineno = 0;
   19139             :   const char *__pyx_filename = NULL;
   19140             :   int __pyx_clineno = 0;
   19141             :   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 1);
   19142             : 
   19143             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":816
   19144             :  * 
   19145             :  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
   19146             :  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
   19147             :  * 
   19148             :  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
   19149             :  */
   19150             :   __Pyx_XDECREF(__pyx_r);
   19151             :   __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
   19152             :   __Pyx_GOTREF(__pyx_t_1);
   19153             :   __pyx_r = __pyx_t_1;
   19154             :   __pyx_t_1 = 0;
   19155             :   goto __pyx_L0;
   19156             : 
   19157             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":815
   19158             :  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
   19159             :  * 
   19160             :  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
   19161             :  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
   19162             :  * 
   19163             :  */
   19164             : 
   19165             :   /* function exit code */
   19166             :   __pyx_L1_error:;
   19167             :   __Pyx_XDECREF(__pyx_t_1);
   19168             :   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19169             :   __pyx_r = 0;
   19170             :   __pyx_L0:;
   19171             :   __Pyx_XGIVEREF(__pyx_r);
   19172             :   __Pyx_RefNannyFinishContext();
   19173             :   return __pyx_r;
   19174             : }
   19175             : 
   19176             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":818
   19177             :  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
   19178             :  * 
   19179             :  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
   19180             :  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
   19181             :  * 
   19182             :  */
   19183             : 
   19184             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
   19185             :   PyObject *__pyx_r = NULL;
   19186             :   __Pyx_RefNannyDeclarations
   19187             :   PyObject *__pyx_t_1 = NULL;
   19188             :   int __pyx_lineno = 0;
   19189             :   const char *__pyx_filename = NULL;
   19190             :   int __pyx_clineno = 0;
   19191             :   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 1);
   19192             : 
   19193             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":819
   19194             :  * 
   19195             :  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
   19196             :  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
   19197             :  * 
   19198             :  * cdef inline tuple PyDataType_SHAPE(dtype d):
   19199             :  */
   19200             :   __Pyx_XDECREF(__pyx_r);
   19201             :   __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 819, __pyx_L1_error)
   19202             :   __Pyx_GOTREF(__pyx_t_1);
   19203             :   __pyx_r = __pyx_t_1;
   19204             :   __pyx_t_1 = 0;
   19205             :   goto __pyx_L0;
   19206             : 
   19207             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":818
   19208             :  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
   19209             :  * 
   19210             :  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
   19211             :  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
   19212             :  * 
   19213             :  */
   19214             : 
   19215             :   /* function exit code */
   19216             :   __pyx_L1_error:;
   19217             :   __Pyx_XDECREF(__pyx_t_1);
   19218             :   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19219             :   __pyx_r = 0;
   19220             :   __pyx_L0:;
   19221             :   __Pyx_XGIVEREF(__pyx_r);
   19222             :   __Pyx_RefNannyFinishContext();
   19223             :   return __pyx_r;
   19224             : }
   19225             : 
   19226             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":821
   19227             :  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
   19228             :  * 
   19229             :  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
   19230             :  *     if PyDataType_HASSUBARRAY(d):
   19231             :  *         return <tuple>d.subarray.shape
   19232             :  */
   19233             : 
   19234             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
   19235             :   PyObject *__pyx_r = NULL;
   19236             :   __Pyx_RefNannyDeclarations
   19237             :   int __pyx_t_1;
   19238             :   PyObject *__pyx_t_2;
   19239             :   __Pyx_RefNannySetupContext("PyDataType_SHAPE", 1);
   19240             : 
   19241             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822
   19242             :  * 
   19243             :  * cdef inline tuple PyDataType_SHAPE(dtype d):
   19244             :  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
   19245             :  *         return <tuple>d.subarray.shape
   19246             :  *     else:
   19247             :  */
   19248             :   __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d);
   19249             :   if (__pyx_t_1) {
   19250             : 
   19251             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":823
   19252             :  * cdef inline tuple PyDataType_SHAPE(dtype d):
   19253             :  *     if PyDataType_HASSUBARRAY(d):
   19254             :  *         return <tuple>d.subarray.shape             # <<<<<<<<<<<<<<
   19255             :  *     else:
   19256             :  *         return ()
   19257             :  */
   19258             :     __Pyx_XDECREF(__pyx_r);
   19259             :     __pyx_t_2 = __pyx_f_5numpy_5dtype_8subarray_subarray(__pyx_v_d)->shape;
   19260             :     __Pyx_INCREF(((PyObject*)__pyx_t_2));
   19261             :     __pyx_r = ((PyObject*)__pyx_t_2);
   19262             :     goto __pyx_L0;
   19263             : 
   19264             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822
   19265             :  * 
   19266             :  * cdef inline tuple PyDataType_SHAPE(dtype d):
   19267             :  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
   19268             :  *         return <tuple>d.subarray.shape
   19269             :  *     else:
   19270             :  */
   19271             :   }
   19272             : 
   19273             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":825
   19274             :  *         return <tuple>d.subarray.shape
   19275             :  *     else:
   19276             :  *         return ()             # <<<<<<<<<<<<<<
   19277             :  * 
   19278             :  * 
   19279             :  */
   19280             :   /*else*/ {
   19281             :     __Pyx_XDECREF(__pyx_r);
   19282             :     __Pyx_INCREF(__pyx_empty_tuple);
   19283             :     __pyx_r = __pyx_empty_tuple;
   19284             :     goto __pyx_L0;
   19285             :   }
   19286             : 
   19287             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":821
   19288             :  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
   19289             :  * 
   19290             :  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
   19291             :  *     if PyDataType_HASSUBARRAY(d):
   19292             :  *         return <tuple>d.subarray.shape
   19293             :  */
   19294             : 
   19295             :   /* function exit code */
   19296             :   __pyx_L0:;
   19297             :   __Pyx_XGIVEREF(__pyx_r);
   19298             :   __Pyx_RefNannyFinishContext();
   19299             :   return __pyx_r;
   19300             : }
   19301             : 
   19302             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009
   19303             :  *     int _import_umath() except -1
   19304             :  * 
   19305             :  * cdef inline void set_array_base(ndarray arr, object base) except *:             # <<<<<<<<<<<<<<
   19306             :  *     Py_INCREF(base) # important to do this before stealing the reference below!
   19307             :  *     PyArray_SetBaseObject(arr, base)
   19308             :  */
   19309             : 
   19310             : static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
   19311             :   int __pyx_t_1;
   19312             :   int __pyx_lineno = 0;
   19313             :   const char *__pyx_filename = NULL;
   19314             :   int __pyx_clineno = 0;
   19315             : 
   19316             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010
   19317             :  * 
   19318             :  * cdef inline void set_array_base(ndarray arr, object base) except *:
   19319             :  *     Py_INCREF(base) # important to do this before stealing the reference below!             # <<<<<<<<<<<<<<
   19320             :  *     PyArray_SetBaseObject(arr, base)
   19321             :  * 
   19322             :  */
   19323             :   Py_INCREF(__pyx_v_base);
   19324             : 
   19325             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011
   19326             :  * cdef inline void set_array_base(ndarray arr, object base) except *:
   19327             :  *     Py_INCREF(base) # important to do this before stealing the reference below!
   19328             :  *     PyArray_SetBaseObject(arr, base)             # <<<<<<<<<<<<<<
   19329             :  * 
   19330             :  * cdef inline object get_array_base(ndarray arr):
   19331             :  */
   19332             :   __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1011, __pyx_L1_error)
   19333             : 
   19334             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009
   19335             :  *     int _import_umath() except -1
   19336             :  * 
   19337             :  * cdef inline void set_array_base(ndarray arr, object base) except *:             # <<<<<<<<<<<<<<
   19338             :  *     Py_INCREF(base) # important to do this before stealing the reference below!
   19339             :  *     PyArray_SetBaseObject(arr, base)
   19340             :  */
   19341             : 
   19342             :   /* function exit code */
   19343             :   goto __pyx_L0;
   19344             :   __pyx_L1_error:;
   19345             :   __Pyx_AddTraceback("numpy.set_array_base", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19346             :   __pyx_L0:;
   19347             : }
   19348             : 
   19349             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013
   19350             :  *     PyArray_SetBaseObject(arr, base)
   19351             :  * 
   19352             :  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
   19353             :  *     base = PyArray_BASE(arr)
   19354             :  *     if base is NULL:
   19355             :  */
   19356             : 
   19357             : static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
   19358             :   PyObject *__pyx_v_base;
   19359             :   PyObject *__pyx_r = NULL;
   19360             :   __Pyx_RefNannyDeclarations
   19361             :   int __pyx_t_1;
   19362             :   __Pyx_RefNannySetupContext("get_array_base", 1);
   19363             : 
   19364             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014
   19365             :  * 
   19366             :  * cdef inline object get_array_base(ndarray arr):
   19367             :  *     base = PyArray_BASE(arr)             # <<<<<<<<<<<<<<
   19368             :  *     if base is NULL:
   19369             :  *         return None
   19370             :  */
   19371             :   __pyx_v_base = PyArray_BASE(__pyx_v_arr);
   19372             : 
   19373             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015
   19374             :  * cdef inline object get_array_base(ndarray arr):
   19375             :  *     base = PyArray_BASE(arr)
   19376             :  *     if base is NULL:             # <<<<<<<<<<<<<<
   19377             :  *         return None
   19378             :  *     return <object>base
   19379             :  */
   19380             :   __pyx_t_1 = (__pyx_v_base == NULL);
   19381             :   if (__pyx_t_1) {
   19382             : 
   19383             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016
   19384             :  *     base = PyArray_BASE(arr)
   19385             :  *     if base is NULL:
   19386             :  *         return None             # <<<<<<<<<<<<<<
   19387             :  *     return <object>base
   19388             :  * 
   19389             :  */
   19390             :     __Pyx_XDECREF(__pyx_r);
   19391             :     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   19392             :     goto __pyx_L0;
   19393             : 
   19394             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015
   19395             :  * cdef inline object get_array_base(ndarray arr):
   19396             :  *     base = PyArray_BASE(arr)
   19397             :  *     if base is NULL:             # <<<<<<<<<<<<<<
   19398             :  *         return None
   19399             :  *     return <object>base
   19400             :  */
   19401             :   }
   19402             : 
   19403             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017
   19404             :  *     if base is NULL:
   19405             :  *         return None
   19406             :  *     return <object>base             # <<<<<<<<<<<<<<
   19407             :  * 
   19408             :  * # Versions of the import_* functions which are more suitable for
   19409             :  */
   19410             :   __Pyx_XDECREF(__pyx_r);
   19411             :   __Pyx_INCREF(((PyObject *)__pyx_v_base));
   19412             :   __pyx_r = ((PyObject *)__pyx_v_base);
   19413             :   goto __pyx_L0;
   19414             : 
   19415             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013
   19416             :  *     PyArray_SetBaseObject(arr, base)
   19417             :  * 
   19418             :  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
   19419             :  *     base = PyArray_BASE(arr)
   19420             :  *     if base is NULL:
   19421             :  */
   19422             : 
   19423             :   /* function exit code */
   19424             :   __pyx_L0:;
   19425             :   __Pyx_XGIVEREF(__pyx_r);
   19426             :   __Pyx_RefNannyFinishContext();
   19427             :   return __pyx_r;
   19428             : }
   19429             : 
   19430             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021
   19431             :  * # Versions of the import_* functions which are more suitable for
   19432             :  * # Cython code.
   19433             :  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
   19434             :  *     try:
   19435             :  *         __pyx_import_array()
   19436             :  */
   19437             : 
   19438           1 : static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
   19439           1 :   int __pyx_r;
   19440             :   __Pyx_RefNannyDeclarations
   19441           1 :   PyObject *__pyx_t_1 = NULL;
   19442           1 :   PyObject *__pyx_t_2 = NULL;
   19443           1 :   PyObject *__pyx_t_3 = NULL;
   19444           1 :   int __pyx_t_4;
   19445           1 :   PyObject *__pyx_t_5 = NULL;
   19446           1 :   PyObject *__pyx_t_6 = NULL;
   19447           1 :   PyObject *__pyx_t_7 = NULL;
   19448           1 :   PyObject *__pyx_t_8 = NULL;
   19449           1 :   int __pyx_lineno = 0;
   19450           1 :   const char *__pyx_filename = NULL;
   19451           1 :   int __pyx_clineno = 0;
   19452           1 :   __Pyx_RefNannySetupContext("import_array", 1);
   19453             : 
   19454             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022
   19455             :  * # Cython code.
   19456             :  * cdef inline int import_array() except -1:
   19457             :  *     try:             # <<<<<<<<<<<<<<
   19458             :  *         __pyx_import_array()
   19459             :  *     except Exception:
   19460             :  */
   19461             :   {
   19462           1 :     __Pyx_PyThreadState_declare
   19463           1 :     __Pyx_PyThreadState_assign
   19464           1 :     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
   19465           1 :     __Pyx_XGOTREF(__pyx_t_1);
   19466           1 :     __Pyx_XGOTREF(__pyx_t_2);
   19467           1 :     __Pyx_XGOTREF(__pyx_t_3);
   19468             :     /*try:*/ {
   19469             : 
   19470             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023
   19471             :  * cdef inline int import_array() except -1:
   19472             :  *     try:
   19473             :  *         __pyx_import_array()             # <<<<<<<<<<<<<<
   19474             :  *     except Exception:
   19475             :  *         raise ImportError("numpy._core.multiarray failed to import")
   19476             :  */
   19477           1 :       __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1023, __pyx_L3_error)
   19478             : 
   19479             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022
   19480             :  * # Cython code.
   19481             :  * cdef inline int import_array() except -1:
   19482             :  *     try:             # <<<<<<<<<<<<<<
   19483             :  *         __pyx_import_array()
   19484             :  *     except Exception:
   19485             :  */
   19486             :     }
   19487           1 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   19488           1 :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   19489           1 :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   19490           1 :     goto __pyx_L8_try_end;
   19491           0 :     __pyx_L3_error:;
   19492             : 
   19493             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1024
   19494             :  *     try:
   19495             :  *         __pyx_import_array()
   19496             :  *     except Exception:             # <<<<<<<<<<<<<<
   19497             :  *         raise ImportError("numpy._core.multiarray failed to import")
   19498             :  * 
   19499             :  */
   19500           0 :     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
   19501           0 :     if (__pyx_t_4) {
   19502           0 :       __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19503           0 :       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1024, __pyx_L5_except_error)
   19504           0 :       __Pyx_XGOTREF(__pyx_t_5);
   19505           0 :       __Pyx_XGOTREF(__pyx_t_6);
   19506           0 :       __Pyx_XGOTREF(__pyx_t_7);
   19507             : 
   19508             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025
   19509             :  *         __pyx_import_array()
   19510             :  *     except Exception:
   19511             :  *         raise ImportError("numpy._core.multiarray failed to import")             # <<<<<<<<<<<<<<
   19512             :  * 
   19513             :  * cdef inline int import_umath() except -1:
   19514             :  */
   19515           0 :       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1025, __pyx_L5_except_error)
   19516           0 :       __Pyx_GOTREF(__pyx_t_8);
   19517           0 :       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
   19518           0 :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   19519           0 :       __PYX_ERR(2, 1025, __pyx_L5_except_error)
   19520             :     }
   19521           0 :     goto __pyx_L5_except_error;
   19522             : 
   19523             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022
   19524             :  * # Cython code.
   19525             :  * cdef inline int import_array() except -1:
   19526             :  *     try:             # <<<<<<<<<<<<<<
   19527             :  *         __pyx_import_array()
   19528             :  *     except Exception:
   19529             :  */
   19530           0 :     __pyx_L5_except_error:;
   19531           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   19532           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   19533           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   19534           0 :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   19535           0 :     goto __pyx_L1_error;
   19536           1 :     __pyx_L8_try_end:;
   19537             :   }
   19538             : 
   19539             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021
   19540             :  * # Versions of the import_* functions which are more suitable for
   19541             :  * # Cython code.
   19542             :  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
   19543             :  *     try:
   19544             :  *         __pyx_import_array()
   19545             :  */
   19546             : 
   19547             :   /* function exit code */
   19548           1 :   __pyx_r = 0;
   19549           1 :   goto __pyx_L0;
   19550           0 :   __pyx_L1_error:;
   19551           0 :   __Pyx_XDECREF(__pyx_t_5);
   19552           0 :   __Pyx_XDECREF(__pyx_t_6);
   19553           0 :   __Pyx_XDECREF(__pyx_t_7);
   19554           0 :   __Pyx_XDECREF(__pyx_t_8);
   19555           0 :   __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19556           0 :   __pyx_r = -1;
   19557           1 :   __pyx_L0:;
   19558           1 :   __Pyx_RefNannyFinishContext();
   19559           1 :   return __pyx_r;
   19560             : }
   19561             : 
   19562             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1027
   19563             :  *         raise ImportError("numpy._core.multiarray failed to import")
   19564             :  * 
   19565             :  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
   19566             :  *     try:
   19567             :  *         _import_umath()
   19568             :  */
   19569             : 
   19570             : static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
   19571             :   int __pyx_r;
   19572             :   __Pyx_RefNannyDeclarations
   19573             :   PyObject *__pyx_t_1 = NULL;
   19574             :   PyObject *__pyx_t_2 = NULL;
   19575             :   PyObject *__pyx_t_3 = NULL;
   19576             :   int __pyx_t_4;
   19577             :   PyObject *__pyx_t_5 = NULL;
   19578             :   PyObject *__pyx_t_6 = NULL;
   19579             :   PyObject *__pyx_t_7 = NULL;
   19580             :   PyObject *__pyx_t_8 = NULL;
   19581             :   int __pyx_lineno = 0;
   19582             :   const char *__pyx_filename = NULL;
   19583             :   int __pyx_clineno = 0;
   19584             :   __Pyx_RefNannySetupContext("import_umath", 1);
   19585             : 
   19586             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028
   19587             :  * 
   19588             :  * cdef inline int import_umath() except -1:
   19589             :  *     try:             # <<<<<<<<<<<<<<
   19590             :  *         _import_umath()
   19591             :  *     except Exception:
   19592             :  */
   19593             :   {
   19594             :     __Pyx_PyThreadState_declare
   19595             :     __Pyx_PyThreadState_assign
   19596             :     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
   19597             :     __Pyx_XGOTREF(__pyx_t_1);
   19598             :     __Pyx_XGOTREF(__pyx_t_2);
   19599             :     __Pyx_XGOTREF(__pyx_t_3);
   19600             :     /*try:*/ {
   19601             : 
   19602             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029
   19603             :  * cdef inline int import_umath() except -1:
   19604             :  *     try:
   19605             :  *         _import_umath()             # <<<<<<<<<<<<<<
   19606             :  *     except Exception:
   19607             :  *         raise ImportError("numpy._core.umath failed to import")
   19608             :  */
   19609             :       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1029, __pyx_L3_error)
   19610             : 
   19611             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028
   19612             :  * 
   19613             :  * cdef inline int import_umath() except -1:
   19614             :  *     try:             # <<<<<<<<<<<<<<
   19615             :  *         _import_umath()
   19616             :  *     except Exception:
   19617             :  */
   19618             :     }
   19619             :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   19620             :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   19621             :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   19622             :     goto __pyx_L8_try_end;
   19623             :     __pyx_L3_error:;
   19624             : 
   19625             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1030
   19626             :  *     try:
   19627             :  *         _import_umath()
   19628             :  *     except Exception:             # <<<<<<<<<<<<<<
   19629             :  *         raise ImportError("numpy._core.umath failed to import")
   19630             :  * 
   19631             :  */
   19632             :     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
   19633             :     if (__pyx_t_4) {
   19634             :       __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19635             :       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1030, __pyx_L5_except_error)
   19636             :       __Pyx_XGOTREF(__pyx_t_5);
   19637             :       __Pyx_XGOTREF(__pyx_t_6);
   19638             :       __Pyx_XGOTREF(__pyx_t_7);
   19639             : 
   19640             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1031
   19641             :  *         _import_umath()
   19642             :  *     except Exception:
   19643             :  *         raise ImportError("numpy._core.umath failed to import")             # <<<<<<<<<<<<<<
   19644             :  * 
   19645             :  * cdef inline int import_ufunc() except -1:
   19646             :  */
   19647             :       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1031, __pyx_L5_except_error)
   19648             :       __Pyx_GOTREF(__pyx_t_8);
   19649             :       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
   19650             :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   19651             :       __PYX_ERR(2, 1031, __pyx_L5_except_error)
   19652             :     }
   19653             :     goto __pyx_L5_except_error;
   19654             : 
   19655             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028
   19656             :  * 
   19657             :  * cdef inline int import_umath() except -1:
   19658             :  *     try:             # <<<<<<<<<<<<<<
   19659             :  *         _import_umath()
   19660             :  *     except Exception:
   19661             :  */
   19662             :     __pyx_L5_except_error:;
   19663             :     __Pyx_XGIVEREF(__pyx_t_1);
   19664             :     __Pyx_XGIVEREF(__pyx_t_2);
   19665             :     __Pyx_XGIVEREF(__pyx_t_3);
   19666             :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   19667             :     goto __pyx_L1_error;
   19668             :     __pyx_L8_try_end:;
   19669             :   }
   19670             : 
   19671             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1027
   19672             :  *         raise ImportError("numpy._core.multiarray failed to import")
   19673             :  * 
   19674             :  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
   19675             :  *     try:
   19676             :  *         _import_umath()
   19677             :  */
   19678             : 
   19679             :   /* function exit code */
   19680             :   __pyx_r = 0;
   19681             :   goto __pyx_L0;
   19682             :   __pyx_L1_error:;
   19683             :   __Pyx_XDECREF(__pyx_t_5);
   19684             :   __Pyx_XDECREF(__pyx_t_6);
   19685             :   __Pyx_XDECREF(__pyx_t_7);
   19686             :   __Pyx_XDECREF(__pyx_t_8);
   19687             :   __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19688             :   __pyx_r = -1;
   19689             :   __pyx_L0:;
   19690             :   __Pyx_RefNannyFinishContext();
   19691             :   return __pyx_r;
   19692             : }
   19693             : 
   19694             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1033
   19695             :  *         raise ImportError("numpy._core.umath failed to import")
   19696             :  * 
   19697             :  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
   19698             :  *     try:
   19699             :  *         _import_umath()
   19700             :  */
   19701             : 
   19702             : static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
   19703             :   int __pyx_r;
   19704             :   __Pyx_RefNannyDeclarations
   19705             :   PyObject *__pyx_t_1 = NULL;
   19706             :   PyObject *__pyx_t_2 = NULL;
   19707             :   PyObject *__pyx_t_3 = NULL;
   19708             :   int __pyx_t_4;
   19709             :   PyObject *__pyx_t_5 = NULL;
   19710             :   PyObject *__pyx_t_6 = NULL;
   19711             :   PyObject *__pyx_t_7 = NULL;
   19712             :   PyObject *__pyx_t_8 = NULL;
   19713             :   int __pyx_lineno = 0;
   19714             :   const char *__pyx_filename = NULL;
   19715             :   int __pyx_clineno = 0;
   19716             :   __Pyx_RefNannySetupContext("import_ufunc", 1);
   19717             : 
   19718             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034
   19719             :  * 
   19720             :  * cdef inline int import_ufunc() except -1:
   19721             :  *     try:             # <<<<<<<<<<<<<<
   19722             :  *         _import_umath()
   19723             :  *     except Exception:
   19724             :  */
   19725             :   {
   19726             :     __Pyx_PyThreadState_declare
   19727             :     __Pyx_PyThreadState_assign
   19728             :     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
   19729             :     __Pyx_XGOTREF(__pyx_t_1);
   19730             :     __Pyx_XGOTREF(__pyx_t_2);
   19731             :     __Pyx_XGOTREF(__pyx_t_3);
   19732             :     /*try:*/ {
   19733             : 
   19734             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035
   19735             :  * cdef inline int import_ufunc() except -1:
   19736             :  *     try:
   19737             :  *         _import_umath()             # <<<<<<<<<<<<<<
   19738             :  *     except Exception:
   19739             :  *         raise ImportError("numpy._core.umath failed to import")
   19740             :  */
   19741             :       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1035, __pyx_L3_error)
   19742             : 
   19743             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034
   19744             :  * 
   19745             :  * cdef inline int import_ufunc() except -1:
   19746             :  *     try:             # <<<<<<<<<<<<<<
   19747             :  *         _import_umath()
   19748             :  *     except Exception:
   19749             :  */
   19750             :     }
   19751             :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   19752             :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   19753             :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   19754             :     goto __pyx_L8_try_end;
   19755             :     __pyx_L3_error:;
   19756             : 
   19757             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1036
   19758             :  *     try:
   19759             :  *         _import_umath()
   19760             :  *     except Exception:             # <<<<<<<<<<<<<<
   19761             :  *         raise ImportError("numpy._core.umath failed to import")
   19762             :  * 
   19763             :  */
   19764             :     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
   19765             :     if (__pyx_t_4) {
   19766             :       __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19767             :       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1036, __pyx_L5_except_error)
   19768             :       __Pyx_XGOTREF(__pyx_t_5);
   19769             :       __Pyx_XGOTREF(__pyx_t_6);
   19770             :       __Pyx_XGOTREF(__pyx_t_7);
   19771             : 
   19772             :       /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037
   19773             :  *         _import_umath()
   19774             :  *     except Exception:
   19775             :  *         raise ImportError("numpy._core.umath failed to import")             # <<<<<<<<<<<<<<
   19776             :  * 
   19777             :  * 
   19778             :  */
   19779             :       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1037, __pyx_L5_except_error)
   19780             :       __Pyx_GOTREF(__pyx_t_8);
   19781             :       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
   19782             :       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   19783             :       __PYX_ERR(2, 1037, __pyx_L5_except_error)
   19784             :     }
   19785             :     goto __pyx_L5_except_error;
   19786             : 
   19787             :     /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034
   19788             :  * 
   19789             :  * cdef inline int import_ufunc() except -1:
   19790             :  *     try:             # <<<<<<<<<<<<<<
   19791             :  *         _import_umath()
   19792             :  *     except Exception:
   19793             :  */
   19794             :     __pyx_L5_except_error:;
   19795             :     __Pyx_XGIVEREF(__pyx_t_1);
   19796             :     __Pyx_XGIVEREF(__pyx_t_2);
   19797             :     __Pyx_XGIVEREF(__pyx_t_3);
   19798             :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   19799             :     goto __pyx_L1_error;
   19800             :     __pyx_L8_try_end:;
   19801             :   }
   19802             : 
   19803             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1033
   19804             :  *         raise ImportError("numpy._core.umath failed to import")
   19805             :  * 
   19806             :  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
   19807             :  *     try:
   19808             :  *         _import_umath()
   19809             :  */
   19810             : 
   19811             :   /* function exit code */
   19812             :   __pyx_r = 0;
   19813             :   goto __pyx_L0;
   19814             :   __pyx_L1_error:;
   19815             :   __Pyx_XDECREF(__pyx_t_5);
   19816             :   __Pyx_XDECREF(__pyx_t_6);
   19817             :   __Pyx_XDECREF(__pyx_t_7);
   19818             :   __Pyx_XDECREF(__pyx_t_8);
   19819             :   __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   19820             :   __pyx_r = -1;
   19821             :   __pyx_L0:;
   19822             :   __Pyx_RefNannyFinishContext();
   19823             :   return __pyx_r;
   19824             : }
   19825             : 
   19826             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040
   19827             :  * 
   19828             :  * 
   19829             :  * cdef inline bint is_timedelta64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
   19830             :  *     """
   19831             :  *     Cython equivalent of `isinstance(obj, np.timedelta64)`
   19832             :  */
   19833             : 
   19834             : static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
   19835             :   int __pyx_r;
   19836             : 
   19837             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1052
   19838             :  *     bool
   19839             :  *     """
   19840             :  *     return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type)             # <<<<<<<<<<<<<<
   19841             :  * 
   19842             :  * 
   19843             :  */
   19844             :   __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type));
   19845             :   goto __pyx_L0;
   19846             : 
   19847             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040
   19848             :  * 
   19849             :  * 
   19850             :  * cdef inline bint is_timedelta64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
   19851             :  *     """
   19852             :  *     Cython equivalent of `isinstance(obj, np.timedelta64)`
   19853             :  */
   19854             : 
   19855             :   /* function exit code */
   19856             :   __pyx_L0:;
   19857             :   return __pyx_r;
   19858             : }
   19859             : 
   19860             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055
   19861             :  * 
   19862             :  * 
   19863             :  * cdef inline bint is_datetime64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
   19864             :  *     """
   19865             :  *     Cython equivalent of `isinstance(obj, np.datetime64)`
   19866             :  */
   19867             : 
   19868             : static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
   19869             :   int __pyx_r;
   19870             : 
   19871             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
   19872             :  *     bool
   19873             :  *     """
   19874             :  *     return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type)             # <<<<<<<<<<<<<<
   19875             :  * 
   19876             :  * 
   19877             :  */
   19878             :   __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type));
   19879             :   goto __pyx_L0;
   19880             : 
   19881             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055
   19882             :  * 
   19883             :  * 
   19884             :  * cdef inline bint is_datetime64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
   19885             :  *     """
   19886             :  *     Cython equivalent of `isinstance(obj, np.datetime64)`
   19887             :  */
   19888             : 
   19889             :   /* function exit code */
   19890             :   __pyx_L0:;
   19891             :   return __pyx_r;
   19892             : }
   19893             : 
   19894             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
   19895             :  * 
   19896             :  * 
   19897             :  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19898             :  *     """
   19899             :  *     returns the int64 value underlying scalar numpy datetime64 object
   19900             :  */
   19901             : 
   19902             : static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
   19903             :   npy_datetime __pyx_r;
   19904             : 
   19905             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
   19906             :  *     also needed.  That can be found using `get_datetime64_unit`.
   19907             :  *     """
   19908             :  *     return (<PyDatetimeScalarObject*>obj).obval             # <<<<<<<<<<<<<<
   19909             :  * 
   19910             :  * 
   19911             :  */
   19912             :   __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval;
   19913             :   goto __pyx_L0;
   19914             : 
   19915             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
   19916             :  * 
   19917             :  * 
   19918             :  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19919             :  *     """
   19920             :  *     returns the int64 value underlying scalar numpy datetime64 object
   19921             :  */
   19922             : 
   19923             :   /* function exit code */
   19924             :   __pyx_L0:;
   19925             :   return __pyx_r;
   19926             : }
   19927             : 
   19928             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
   19929             :  * 
   19930             :  * 
   19931             :  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19932             :  *     """
   19933             :  *     returns the int64 value underlying scalar numpy timedelta64 object
   19934             :  */
   19935             : 
   19936             : static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
   19937             :   npy_timedelta __pyx_r;
   19938             : 
   19939             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
   19940             :  *     returns the int64 value underlying scalar numpy timedelta64 object
   19941             :  *     """
   19942             :  *     return (<PyTimedeltaScalarObject*>obj).obval             # <<<<<<<<<<<<<<
   19943             :  * 
   19944             :  * 
   19945             :  */
   19946             :   __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval;
   19947             :   goto __pyx_L0;
   19948             : 
   19949             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
   19950             :  * 
   19951             :  * 
   19952             :  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19953             :  *     """
   19954             :  *     returns the int64 value underlying scalar numpy timedelta64 object
   19955             :  */
   19956             : 
   19957             :   /* function exit code */
   19958             :   __pyx_L0:;
   19959             :   return __pyx_r;
   19960             : }
   19961             : 
   19962             : /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
   19963             :  * 
   19964             :  * 
   19965             :  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19966             :  *     """
   19967             :  *     returns the unit part of the dtype for a numpy datetime64 object.
   19968             :  */
   19969             : 
   19970             : static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
   19971             :   NPY_DATETIMEUNIT __pyx_r;
   19972             : 
   19973             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
   19974             :  *     returns the unit part of the dtype for a numpy datetime64 object.
   19975             :  *     """
   19976             :  *     return <NPY_DATETIMEUNIT>(<PyDatetimeScalarObject*>obj).obmeta.base             # <<<<<<<<<<<<<<
   19977             :  * 
   19978             :  * 
   19979             :  */
   19980             :   __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base);
   19981             :   goto __pyx_L0;
   19982             : 
   19983             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
   19984             :  * 
   19985             :  * 
   19986             :  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
   19987             :  *     """
   19988             :  *     returns the unit part of the dtype for a numpy datetime64 object.
   19989             :  */
   19990             : 
   19991             :   /* function exit code */
   19992             :   __pyx_L0:;
   19993             :   return __pyx_r;
   19994             : }
   19995             : 
   19996             : /* "scipy/signal/_sosfilt.pyx":29
   19997             :  * @cython.boundscheck(False)
   19998             :  * @cython.wraparound(False)
   19999             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   20000             :  *                          DTYPE_floating_t [:, ::1] x,
   20001             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20002             :  */
   20003             : 
   20004          16 : static void __pyx_fuse_0__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   20005          16 :   Py_ssize_t __pyx_v_n_signals;
   20006          16 :   Py_ssize_t __pyx_v_n_samples;
   20007          16 :   Py_ssize_t __pyx_v_n_sections;
   20008          16 :   Py_ssize_t __pyx_v_i;
   20009          16 :   Py_ssize_t __pyx_v_n;
   20010          16 :   Py_ssize_t __pyx_v_s;
   20011          16 :   float __pyx_v_x_new;
   20012          16 :   float __pyx_v_x_cur;
   20013          16 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   20014          16 :   float __pyx_v_const_1;
   20015          16 :   Py_ssize_t __pyx_t_1;
   20016          16 :   Py_ssize_t __pyx_t_2;
   20017          16 :   Py_ssize_t __pyx_t_3;
   20018          16 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   20019          16 :   Py_ssize_t __pyx_t_5;
   20020          16 :   Py_ssize_t __pyx_t_6;
   20021          16 :   Py_ssize_t __pyx_t_7;
   20022          16 :   Py_ssize_t __pyx_t_8;
   20023          16 :   Py_ssize_t __pyx_t_9;
   20024          16 :   Py_ssize_t __pyx_t_10;
   20025          16 :   Py_ssize_t __pyx_t_11;
   20026          16 :   Py_ssize_t __pyx_t_12;
   20027          16 :   Py_ssize_t __pyx_t_13;
   20028          16 :   Py_ssize_t __pyx_t_14;
   20029          16 :   Py_ssize_t __pyx_t_15;
   20030          16 :   Py_ssize_t __pyx_t_16;
   20031          16 :   Py_ssize_t __pyx_t_17;
   20032          16 :   Py_ssize_t __pyx_t_18;
   20033             : 
   20034             :   /* "scipy/signal/_sosfilt.pyx":33
   20035             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20036             :  *     # Modifies x and zi in place
   20037             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   20038             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20039             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20040             :  */
   20041          16 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   20042             : 
   20043             :   /* "scipy/signal/_sosfilt.pyx":34
   20044             :  *     # Modifies x and zi in place
   20045             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20046             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   20047             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20048             :  *     cdef Py_ssize_t i, n, s
   20049             :  */
   20050          16 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   20051             : 
   20052             :   /* "scipy/signal/_sosfilt.pyx":35
   20053             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20054             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20055             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   20056             :  *     cdef Py_ssize_t i, n, s
   20057             :  *     cdef DTYPE_floating_t x_new, x_cur
   20058             :  */
   20059          16 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   20060             : 
   20061             :   /* "scipy/signal/_sosfilt.pyx":39
   20062             :  *     cdef DTYPE_floating_t x_new, x_cur
   20063             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   20064             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   20065             :  * 
   20066             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20067             :  */
   20068          16 :   __pyx_v_const_1 = 1.0;
   20069             : 
   20070             :   /* "scipy/signal/_sosfilt.pyx":43
   20071             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20072             :  *     # the original version is still in the gil version below.
   20073             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   20074             :  *         zi_slice = zi[i, :, :]
   20075             :  *         for n in xrange(n_samples):
   20076             :  */
   20077          16 :   __pyx_t_1 = __pyx_v_n_signals;
   20078          16 :   __pyx_t_2 = __pyx_t_1;
   20079          32 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   20080          16 :     __pyx_v_i = __pyx_t_3;
   20081             : 
   20082             :     /* "scipy/signal/_sosfilt.pyx":44
   20083             :  *     # the original version is still in the gil version below.
   20084             :  *     for i in xrange(n_signals):
   20085             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   20086             :  *         for n in xrange(n_samples):
   20087             :  * 
   20088             :  */
   20089          16 :     __pyx_t_4.data = __pyx_v_zi.data;
   20090          16 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   20091          16 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   20092             :     {
   20093          16 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   20094          16 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   20095          16 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   20096             : }
   20097             : 
   20098          16 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   20099          16 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   20100          16 :     __pyx_t_4.suboffsets[0] = -1;
   20101             : 
   20102          16 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   20103          16 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   20104          16 :     __pyx_t_4.suboffsets[1] = -1;
   20105             : 
   20106          16 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20107          16 :     __pyx_v_zi_slice = __pyx_t_4;
   20108          16 :     __pyx_t_4.memview = NULL;
   20109          16 :     __pyx_t_4.data = NULL;
   20110             : 
   20111             :     /* "scipy/signal/_sosfilt.pyx":45
   20112             :  *     for i in xrange(n_signals):
   20113             :  *         zi_slice = zi[i, :, :]
   20114             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   20115             :  * 
   20116             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20117             :  */
   20118          16 :     __pyx_t_5 = __pyx_v_n_samples;
   20119          16 :     __pyx_t_6 = __pyx_t_5;
   20120       21304 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   20121       21288 :       __pyx_v_n = __pyx_t_7;
   20122             : 
   20123             :       /* "scipy/signal/_sosfilt.pyx":47
   20124             :  *         for n in xrange(n_samples):
   20125             :  * 
   20126             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   20127             :  * 
   20128             :  *             for s in xrange(n_sections):
   20129             :  */
   20130       21288 :       __pyx_t_8 = __pyx_v_i;
   20131       21288 :       __pyx_t_9 = __pyx_v_n;
   20132       21288 :       __pyx_v_x_cur = (__pyx_v_const_1 * (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   20133             : 
   20134             :       /* "scipy/signal/_sosfilt.pyx":49
   20135             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20136             :  * 
   20137             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   20138             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20139             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20140             :  */
   20141       21288 :       __pyx_t_10 = __pyx_v_n_sections;
   20142       21288 :       __pyx_t_11 = __pyx_t_10;
   20143      103416 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   20144       82128 :         __pyx_v_s = __pyx_t_12;
   20145             : 
   20146             :         /* "scipy/signal/_sosfilt.pyx":50
   20147             :  * 
   20148             :  *             for s in xrange(n_sections):
   20149             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   20150             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20151             :  *                                   + zi_slice[s, 1])
   20152             :  */
   20153       82128 :         __pyx_t_9 = __pyx_v_s;
   20154       82128 :         __pyx_t_8 = 0;
   20155       82128 :         __pyx_t_13 = __pyx_v_s;
   20156       82128 :         __pyx_t_14 = 0;
   20157       82128 :         __pyx_v_x_new = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_cur) + (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   20158             : 
   20159             :         /* "scipy/signal/_sosfilt.pyx":51
   20160             :  *             for s in xrange(n_sections):
   20161             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20162             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20163             :  *                                   + zi_slice[s, 1])
   20164             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20165             :  */
   20166       82128 :         __pyx_t_14 = __pyx_v_s;
   20167       82128 :         __pyx_t_13 = 1;
   20168       82128 :         __pyx_t_8 = __pyx_v_s;
   20169       82128 :         __pyx_t_9 = 4;
   20170             : 
   20171             :         /* "scipy/signal/_sosfilt.pyx":52
   20172             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20173             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20174             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   20175             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20176             :  *                 x_cur = x_new
   20177             :  */
   20178       82128 :         __pyx_t_15 = __pyx_v_s;
   20179       82128 :         __pyx_t_16 = 1;
   20180             : 
   20181             :         /* "scipy/signal/_sosfilt.pyx":51
   20182             :  *             for s in xrange(n_sections):
   20183             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20184             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20185             :  *                                   + zi_slice[s, 1])
   20186             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20187             :  */
   20188       82128 :         __pyx_t_17 = __pyx_v_s;
   20189       82128 :         __pyx_t_18 = 0;
   20190       82128 :         *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = ((((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))) * __pyx_v_x_cur) - ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))) * __pyx_v_x_new)) + (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   20191             : 
   20192             :         /* "scipy/signal/_sosfilt.pyx":53
   20193             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20194             :  *                                   + zi_slice[s, 1])
   20195             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   20196             :  *                 x_cur = x_new
   20197             :  * 
   20198             :  */
   20199       82128 :         __pyx_t_16 = __pyx_v_s;
   20200       82128 :         __pyx_t_15 = 2;
   20201       82128 :         __pyx_t_9 = __pyx_v_s;
   20202       82128 :         __pyx_t_8 = 5;
   20203       82128 :         __pyx_t_13 = __pyx_v_s;
   20204       82128 :         __pyx_t_14 = 1;
   20205       82128 :         *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))) * __pyx_v_x_cur) - ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_new));
   20206             : 
   20207             :         /* "scipy/signal/_sosfilt.pyx":54
   20208             :  *                                   + zi_slice[s, 1])
   20209             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20210             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   20211             :  * 
   20212             :  *             x[i, n] = x_cur
   20213             :  */
   20214       82128 :         __pyx_v_x_cur = __pyx_v_x_new;
   20215             :       }
   20216             : 
   20217             :       /* "scipy/signal/_sosfilt.pyx":56
   20218             :  *                 x_cur = x_new
   20219             :  * 
   20220             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   20221             :  * 
   20222             :  * 
   20223             :  */
   20224       21288 :       __pyx_t_8 = __pyx_v_i;
   20225       21288 :       __pyx_t_9 = __pyx_v_n;
   20226       21288 :       *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   20227             :     }
   20228             :   }
   20229             : 
   20230             :   /* "scipy/signal/_sosfilt.pyx":29
   20231             :  * @cython.boundscheck(False)
   20232             :  * @cython.wraparound(False)
   20233             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   20234             :  *                          DTYPE_floating_t [:, ::1] x,
   20235             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20236             :  */
   20237             : 
   20238             :   /* function exit code */
   20239          16 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20240          16 : }
   20241             : 
   20242           0 : static void __pyx_fuse_1__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   20243           0 :   Py_ssize_t __pyx_v_n_signals;
   20244           0 :   Py_ssize_t __pyx_v_n_samples;
   20245           0 :   Py_ssize_t __pyx_v_n_sections;
   20246           0 :   Py_ssize_t __pyx_v_i;
   20247           0 :   Py_ssize_t __pyx_v_n;
   20248           0 :   Py_ssize_t __pyx_v_s;
   20249           0 :   __pyx_t_float_complex __pyx_v_x_new;
   20250           0 :   __pyx_t_float_complex __pyx_v_x_cur;
   20251           0 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   20252           0 :   __pyx_t_float_complex __pyx_v_const_1;
   20253           0 :   Py_ssize_t __pyx_t_1;
   20254           0 :   Py_ssize_t __pyx_t_2;
   20255           0 :   Py_ssize_t __pyx_t_3;
   20256           0 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   20257           0 :   Py_ssize_t __pyx_t_5;
   20258           0 :   Py_ssize_t __pyx_t_6;
   20259           0 :   Py_ssize_t __pyx_t_7;
   20260           0 :   Py_ssize_t __pyx_t_8;
   20261           0 :   Py_ssize_t __pyx_t_9;
   20262           0 :   Py_ssize_t __pyx_t_10;
   20263           0 :   Py_ssize_t __pyx_t_11;
   20264           0 :   Py_ssize_t __pyx_t_12;
   20265           0 :   Py_ssize_t __pyx_t_13;
   20266           0 :   Py_ssize_t __pyx_t_14;
   20267           0 :   Py_ssize_t __pyx_t_15;
   20268           0 :   Py_ssize_t __pyx_t_16;
   20269           0 :   Py_ssize_t __pyx_t_17;
   20270           0 :   Py_ssize_t __pyx_t_18;
   20271             : 
   20272             :   /* "scipy/signal/_sosfilt.pyx":33
   20273             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20274             :  *     # Modifies x and zi in place
   20275             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   20276             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20277             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20278             :  */
   20279           0 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   20280             : 
   20281             :   /* "scipy/signal/_sosfilt.pyx":34
   20282             :  *     # Modifies x and zi in place
   20283             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20284             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   20285             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20286             :  *     cdef Py_ssize_t i, n, s
   20287             :  */
   20288           0 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   20289             : 
   20290             :   /* "scipy/signal/_sosfilt.pyx":35
   20291             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20292             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20293             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   20294             :  *     cdef Py_ssize_t i, n, s
   20295             :  *     cdef DTYPE_floating_t x_new, x_cur
   20296             :  */
   20297           0 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   20298             : 
   20299             :   /* "scipy/signal/_sosfilt.pyx":39
   20300             :  *     cdef DTYPE_floating_t x_new, x_cur
   20301             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   20302             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   20303             :  * 
   20304             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20305             :  */
   20306           0 :   __pyx_v_const_1 = __pyx_t_float_complex_from_parts(1.0, 0);
   20307             : 
   20308             :   /* "scipy/signal/_sosfilt.pyx":43
   20309             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20310             :  *     # the original version is still in the gil version below.
   20311             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   20312             :  *         zi_slice = zi[i, :, :]
   20313             :  *         for n in xrange(n_samples):
   20314             :  */
   20315           0 :   __pyx_t_1 = __pyx_v_n_signals;
   20316           0 :   __pyx_t_2 = __pyx_t_1;
   20317           0 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   20318           0 :     __pyx_v_i = __pyx_t_3;
   20319             : 
   20320             :     /* "scipy/signal/_sosfilt.pyx":44
   20321             :  *     # the original version is still in the gil version below.
   20322             :  *     for i in xrange(n_signals):
   20323             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   20324             :  *         for n in xrange(n_samples):
   20325             :  * 
   20326             :  */
   20327           0 :     __pyx_t_4.data = __pyx_v_zi.data;
   20328           0 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   20329           0 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   20330             :     {
   20331           0 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   20332           0 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   20333           0 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   20334             : }
   20335             : 
   20336           0 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   20337           0 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   20338           0 :     __pyx_t_4.suboffsets[0] = -1;
   20339             : 
   20340           0 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   20341           0 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   20342           0 :     __pyx_t_4.suboffsets[1] = -1;
   20343             : 
   20344           0 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20345           0 :     __pyx_v_zi_slice = __pyx_t_4;
   20346           0 :     __pyx_t_4.memview = NULL;
   20347           0 :     __pyx_t_4.data = NULL;
   20348             : 
   20349             :     /* "scipy/signal/_sosfilt.pyx":45
   20350             :  *     for i in xrange(n_signals):
   20351             :  *         zi_slice = zi[i, :, :]
   20352             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   20353             :  * 
   20354             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20355             :  */
   20356           0 :     __pyx_t_5 = __pyx_v_n_samples;
   20357           0 :     __pyx_t_6 = __pyx_t_5;
   20358           0 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   20359           0 :       __pyx_v_n = __pyx_t_7;
   20360             : 
   20361             :       /* "scipy/signal/_sosfilt.pyx":47
   20362             :  *         for n in xrange(n_samples):
   20363             :  * 
   20364             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   20365             :  * 
   20366             :  *             for s in xrange(n_sections):
   20367             :  */
   20368           0 :       __pyx_t_8 = __pyx_v_i;
   20369           0 :       __pyx_t_9 = __pyx_v_n;
   20370           0 :       __pyx_v_x_cur = __Pyx_c_prod_float(__pyx_v_const_1, (*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   20371             : 
   20372             :       /* "scipy/signal/_sosfilt.pyx":49
   20373             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20374             :  * 
   20375             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   20376             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20377             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20378             :  */
   20379           0 :       __pyx_t_10 = __pyx_v_n_sections;
   20380           0 :       __pyx_t_11 = __pyx_t_10;
   20381           0 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   20382           0 :         __pyx_v_s = __pyx_t_12;
   20383             : 
   20384             :         /* "scipy/signal/_sosfilt.pyx":50
   20385             :  * 
   20386             :  *             for s in xrange(n_sections):
   20387             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   20388             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20389             :  *                                   + zi_slice[s, 1])
   20390             :  */
   20391           0 :         __pyx_t_9 = __pyx_v_s;
   20392           0 :         __pyx_t_8 = 0;
   20393           0 :         __pyx_t_13 = __pyx_v_s;
   20394           0 :         __pyx_t_14 = 0;
   20395           0 :         __pyx_v_x_new = __Pyx_c_sum_float(__Pyx_c_prod_float((*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_cur), (*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   20396             : 
   20397             :         /* "scipy/signal/_sosfilt.pyx":51
   20398             :  *             for s in xrange(n_sections):
   20399             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20400             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20401             :  *                                   + zi_slice[s, 1])
   20402             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20403             :  */
   20404           0 :         __pyx_t_14 = __pyx_v_s;
   20405           0 :         __pyx_t_13 = 1;
   20406           0 :         __pyx_t_8 = __pyx_v_s;
   20407           0 :         __pyx_t_9 = 4;
   20408             : 
   20409             :         /* "scipy/signal/_sosfilt.pyx":52
   20410             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20411             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20412             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   20413             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20414             :  *                 x_cur = x_new
   20415             :  */
   20416           0 :         __pyx_t_15 = __pyx_v_s;
   20417           0 :         __pyx_t_16 = 1;
   20418             : 
   20419             :         /* "scipy/signal/_sosfilt.pyx":51
   20420             :  *             for s in xrange(n_sections):
   20421             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20422             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20423             :  *                                   + zi_slice[s, 1])
   20424             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20425             :  */
   20426           0 :         __pyx_t_17 = __pyx_v_s;
   20427           0 :         __pyx_t_18 = 0;
   20428           0 :         *((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = __Pyx_c_sum_float(__Pyx_c_diff_float(__Pyx_c_prod_float((*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))), __pyx_v_x_cur), __Pyx_c_prod_float((*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))), __pyx_v_x_new)), (*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   20429             : 
   20430             :         /* "scipy/signal/_sosfilt.pyx":53
   20431             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20432             :  *                                   + zi_slice[s, 1])
   20433             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   20434             :  *                 x_cur = x_new
   20435             :  * 
   20436             :  */
   20437           0 :         __pyx_t_16 = __pyx_v_s;
   20438           0 :         __pyx_t_15 = 2;
   20439           0 :         __pyx_t_9 = __pyx_v_s;
   20440           0 :         __pyx_t_8 = 5;
   20441           0 :         __pyx_t_13 = __pyx_v_s;
   20442           0 :         __pyx_t_14 = 1;
   20443           0 :         *((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = __Pyx_c_diff_float(__Pyx_c_prod_float((*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))), __pyx_v_x_cur), __Pyx_c_prod_float((*((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_new));
   20444             : 
   20445             :         /* "scipy/signal/_sosfilt.pyx":54
   20446             :  *                                   + zi_slice[s, 1])
   20447             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20448             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   20449             :  * 
   20450             :  *             x[i, n] = x_cur
   20451             :  */
   20452           0 :         __pyx_v_x_cur = __pyx_v_x_new;
   20453             :       }
   20454             : 
   20455             :       /* "scipy/signal/_sosfilt.pyx":56
   20456             :  *                 x_cur = x_new
   20457             :  * 
   20458             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   20459             :  * 
   20460             :  * 
   20461             :  */
   20462           0 :       __pyx_t_8 = __pyx_v_i;
   20463           0 :       __pyx_t_9 = __pyx_v_n;
   20464           0 :       *((__pyx_t_float_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_float_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   20465             :     }
   20466             :   }
   20467             : 
   20468             :   /* "scipy/signal/_sosfilt.pyx":29
   20469             :  * @cython.boundscheck(False)
   20470             :  * @cython.wraparound(False)
   20471             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   20472             :  *                          DTYPE_floating_t [:, ::1] x,
   20473             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20474             :  */
   20475             : 
   20476             :   /* function exit code */
   20477           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20478           0 : }
   20479             : 
   20480          89 : static void __pyx_fuse_2__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   20481          89 :   Py_ssize_t __pyx_v_n_signals;
   20482          89 :   Py_ssize_t __pyx_v_n_samples;
   20483          89 :   Py_ssize_t __pyx_v_n_sections;
   20484          89 :   Py_ssize_t __pyx_v_i;
   20485          89 :   Py_ssize_t __pyx_v_n;
   20486          89 :   Py_ssize_t __pyx_v_s;
   20487          89 :   double __pyx_v_x_new;
   20488          89 :   double __pyx_v_x_cur;
   20489          89 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   20490          89 :   double __pyx_v_const_1;
   20491          89 :   Py_ssize_t __pyx_t_1;
   20492          89 :   Py_ssize_t __pyx_t_2;
   20493          89 :   Py_ssize_t __pyx_t_3;
   20494          89 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   20495          89 :   Py_ssize_t __pyx_t_5;
   20496          89 :   Py_ssize_t __pyx_t_6;
   20497          89 :   Py_ssize_t __pyx_t_7;
   20498          89 :   Py_ssize_t __pyx_t_8;
   20499          89 :   Py_ssize_t __pyx_t_9;
   20500          89 :   Py_ssize_t __pyx_t_10;
   20501          89 :   Py_ssize_t __pyx_t_11;
   20502          89 :   Py_ssize_t __pyx_t_12;
   20503          89 :   Py_ssize_t __pyx_t_13;
   20504          89 :   Py_ssize_t __pyx_t_14;
   20505          89 :   Py_ssize_t __pyx_t_15;
   20506          89 :   Py_ssize_t __pyx_t_16;
   20507          89 :   Py_ssize_t __pyx_t_17;
   20508          89 :   Py_ssize_t __pyx_t_18;
   20509             : 
   20510             :   /* "scipy/signal/_sosfilt.pyx":33
   20511             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20512             :  *     # Modifies x and zi in place
   20513             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   20514             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20515             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20516             :  */
   20517          89 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   20518             : 
   20519             :   /* "scipy/signal/_sosfilt.pyx":34
   20520             :  *     # Modifies x and zi in place
   20521             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20522             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   20523             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20524             :  *     cdef Py_ssize_t i, n, s
   20525             :  */
   20526          89 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   20527             : 
   20528             :   /* "scipy/signal/_sosfilt.pyx":35
   20529             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20530             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20531             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   20532             :  *     cdef Py_ssize_t i, n, s
   20533             :  *     cdef DTYPE_floating_t x_new, x_cur
   20534             :  */
   20535          89 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   20536             : 
   20537             :   /* "scipy/signal/_sosfilt.pyx":39
   20538             :  *     cdef DTYPE_floating_t x_new, x_cur
   20539             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   20540             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   20541             :  * 
   20542             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20543             :  */
   20544          89 :   __pyx_v_const_1 = 1.0;
   20545             : 
   20546             :   /* "scipy/signal/_sosfilt.pyx":43
   20547             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20548             :  *     # the original version is still in the gil version below.
   20549             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   20550             :  *         zi_slice = zi[i, :, :]
   20551             :  *         for n in xrange(n_samples):
   20552             :  */
   20553          89 :   __pyx_t_1 = __pyx_v_n_signals;
   20554          89 :   __pyx_t_2 = __pyx_t_1;
   20555        1404 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   20556        1315 :     __pyx_v_i = __pyx_t_3;
   20557             : 
   20558             :     /* "scipy/signal/_sosfilt.pyx":44
   20559             :  *     # the original version is still in the gil version below.
   20560             :  *     for i in xrange(n_signals):
   20561             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   20562             :  *         for n in xrange(n_samples):
   20563             :  * 
   20564             :  */
   20565        1315 :     __pyx_t_4.data = __pyx_v_zi.data;
   20566        1315 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   20567        1315 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   20568             :     {
   20569        1315 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   20570        1315 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   20571        1315 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   20572             : }
   20573             : 
   20574        1315 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   20575        1315 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   20576        1315 :     __pyx_t_4.suboffsets[0] = -1;
   20577             : 
   20578        1315 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   20579        1315 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   20580        1315 :     __pyx_t_4.suboffsets[1] = -1;
   20581             : 
   20582        1315 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20583        1315 :     __pyx_v_zi_slice = __pyx_t_4;
   20584        1315 :     __pyx_t_4.memview = NULL;
   20585        1315 :     __pyx_t_4.data = NULL;
   20586             : 
   20587             :     /* "scipy/signal/_sosfilt.pyx":45
   20588             :  *     for i in xrange(n_signals):
   20589             :  *         zi_slice = zi[i, :, :]
   20590             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   20591             :  * 
   20592             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20593             :  */
   20594        1315 :     __pyx_t_5 = __pyx_v_n_samples;
   20595        1315 :     __pyx_t_6 = __pyx_t_5;
   20596       67511 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   20597       66196 :       __pyx_v_n = __pyx_t_7;
   20598             : 
   20599             :       /* "scipy/signal/_sosfilt.pyx":47
   20600             :  *         for n in xrange(n_samples):
   20601             :  * 
   20602             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   20603             :  * 
   20604             :  *             for s in xrange(n_sections):
   20605             :  */
   20606       66196 :       __pyx_t_8 = __pyx_v_i;
   20607       66196 :       __pyx_t_9 = __pyx_v_n;
   20608       66196 :       __pyx_v_x_cur = (__pyx_v_const_1 * (*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   20609             : 
   20610             :       /* "scipy/signal/_sosfilt.pyx":49
   20611             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20612             :  * 
   20613             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   20614             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20615             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20616             :  */
   20617       66196 :       __pyx_t_10 = __pyx_v_n_sections;
   20618       66196 :       __pyx_t_11 = __pyx_t_10;
   20619      226338 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   20620      160142 :         __pyx_v_s = __pyx_t_12;
   20621             : 
   20622             :         /* "scipy/signal/_sosfilt.pyx":50
   20623             :  * 
   20624             :  *             for s in xrange(n_sections):
   20625             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   20626             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20627             :  *                                   + zi_slice[s, 1])
   20628             :  */
   20629      160142 :         __pyx_t_9 = __pyx_v_s;
   20630      160142 :         __pyx_t_8 = 0;
   20631      160142 :         __pyx_t_13 = __pyx_v_s;
   20632      160142 :         __pyx_t_14 = 0;
   20633      160142 :         __pyx_v_x_new = (((*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_cur) + (*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   20634             : 
   20635             :         /* "scipy/signal/_sosfilt.pyx":51
   20636             :  *             for s in xrange(n_sections):
   20637             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20638             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20639             :  *                                   + zi_slice[s, 1])
   20640             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20641             :  */
   20642      160142 :         __pyx_t_14 = __pyx_v_s;
   20643      160142 :         __pyx_t_13 = 1;
   20644      160142 :         __pyx_t_8 = __pyx_v_s;
   20645      160142 :         __pyx_t_9 = 4;
   20646             : 
   20647             :         /* "scipy/signal/_sosfilt.pyx":52
   20648             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20649             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20650             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   20651             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20652             :  *                 x_cur = x_new
   20653             :  */
   20654      160142 :         __pyx_t_15 = __pyx_v_s;
   20655      160142 :         __pyx_t_16 = 1;
   20656             : 
   20657             :         /* "scipy/signal/_sosfilt.pyx":51
   20658             :  *             for s in xrange(n_sections):
   20659             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20660             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20661             :  *                                   + zi_slice[s, 1])
   20662             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20663             :  */
   20664      160142 :         __pyx_t_17 = __pyx_v_s;
   20665      160142 :         __pyx_t_18 = 0;
   20666      160142 :         *((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = ((((*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))) * __pyx_v_x_cur) - ((*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))) * __pyx_v_x_new)) + (*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   20667             : 
   20668             :         /* "scipy/signal/_sosfilt.pyx":53
   20669             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20670             :  *                                   + zi_slice[s, 1])
   20671             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   20672             :  *                 x_cur = x_new
   20673             :  * 
   20674             :  */
   20675      160142 :         __pyx_t_16 = __pyx_v_s;
   20676      160142 :         __pyx_t_15 = 2;
   20677      160142 :         __pyx_t_9 = __pyx_v_s;
   20678      160142 :         __pyx_t_8 = 5;
   20679      160142 :         __pyx_t_13 = __pyx_v_s;
   20680      160142 :         __pyx_t_14 = 1;
   20681      160142 :         *((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = (((*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))) * __pyx_v_x_cur) - ((*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_new));
   20682             : 
   20683             :         /* "scipy/signal/_sosfilt.pyx":54
   20684             :  *                                   + zi_slice[s, 1])
   20685             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20686             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   20687             :  * 
   20688             :  *             x[i, n] = x_cur
   20689             :  */
   20690      160142 :         __pyx_v_x_cur = __pyx_v_x_new;
   20691             :       }
   20692             : 
   20693             :       /* "scipy/signal/_sosfilt.pyx":56
   20694             :  *                 x_cur = x_new
   20695             :  * 
   20696             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   20697             :  * 
   20698             :  * 
   20699             :  */
   20700       66196 :       __pyx_t_8 = __pyx_v_i;
   20701       66196 :       __pyx_t_9 = __pyx_v_n;
   20702       66196 :       *((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   20703             :     }
   20704             :   }
   20705             : 
   20706             :   /* "scipy/signal/_sosfilt.pyx":29
   20707             :  * @cython.boundscheck(False)
   20708             :  * @cython.wraparound(False)
   20709             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   20710             :  *                          DTYPE_floating_t [:, ::1] x,
   20711             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20712             :  */
   20713             : 
   20714             :   /* function exit code */
   20715          89 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20716          89 : }
   20717             : 
   20718          28 : static void __pyx_fuse_3__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   20719          28 :   Py_ssize_t __pyx_v_n_signals;
   20720          28 :   Py_ssize_t __pyx_v_n_samples;
   20721          28 :   Py_ssize_t __pyx_v_n_sections;
   20722          28 :   Py_ssize_t __pyx_v_i;
   20723          28 :   Py_ssize_t __pyx_v_n;
   20724          28 :   Py_ssize_t __pyx_v_s;
   20725          28 :   __pyx_t_double_complex __pyx_v_x_new;
   20726          28 :   __pyx_t_double_complex __pyx_v_x_cur;
   20727          28 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   20728          28 :   __pyx_t_double_complex __pyx_v_const_1;
   20729          28 :   Py_ssize_t __pyx_t_1;
   20730          28 :   Py_ssize_t __pyx_t_2;
   20731          28 :   Py_ssize_t __pyx_t_3;
   20732          28 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   20733          28 :   Py_ssize_t __pyx_t_5;
   20734          28 :   Py_ssize_t __pyx_t_6;
   20735          28 :   Py_ssize_t __pyx_t_7;
   20736          28 :   Py_ssize_t __pyx_t_8;
   20737          28 :   Py_ssize_t __pyx_t_9;
   20738          28 :   Py_ssize_t __pyx_t_10;
   20739          28 :   Py_ssize_t __pyx_t_11;
   20740          28 :   Py_ssize_t __pyx_t_12;
   20741          28 :   Py_ssize_t __pyx_t_13;
   20742          28 :   Py_ssize_t __pyx_t_14;
   20743          28 :   Py_ssize_t __pyx_t_15;
   20744          28 :   Py_ssize_t __pyx_t_16;
   20745          28 :   Py_ssize_t __pyx_t_17;
   20746          28 :   Py_ssize_t __pyx_t_18;
   20747             : 
   20748             :   /* "scipy/signal/_sosfilt.pyx":33
   20749             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20750             :  *     # Modifies x and zi in place
   20751             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   20752             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20753             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20754             :  */
   20755          28 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   20756             : 
   20757             :   /* "scipy/signal/_sosfilt.pyx":34
   20758             :  *     # Modifies x and zi in place
   20759             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20760             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   20761             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20762             :  *     cdef Py_ssize_t i, n, s
   20763             :  */
   20764          28 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   20765             : 
   20766             :   /* "scipy/signal/_sosfilt.pyx":35
   20767             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20768             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20769             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   20770             :  *     cdef Py_ssize_t i, n, s
   20771             :  *     cdef DTYPE_floating_t x_new, x_cur
   20772             :  */
   20773          28 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   20774             : 
   20775             :   /* "scipy/signal/_sosfilt.pyx":39
   20776             :  *     cdef DTYPE_floating_t x_new, x_cur
   20777             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   20778             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   20779             :  * 
   20780             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20781             :  */
   20782          28 :   __pyx_v_const_1 = __pyx_t_double_complex_from_parts(1.0, 0);
   20783             : 
   20784             :   /* "scipy/signal/_sosfilt.pyx":43
   20785             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   20786             :  *     # the original version is still in the gil version below.
   20787             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   20788             :  *         zi_slice = zi[i, :, :]
   20789             :  *         for n in xrange(n_samples):
   20790             :  */
   20791          28 :   __pyx_t_1 = __pyx_v_n_signals;
   20792          28 :   __pyx_t_2 = __pyx_t_1;
   20793         106 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   20794          78 :     __pyx_v_i = __pyx_t_3;
   20795             : 
   20796             :     /* "scipy/signal/_sosfilt.pyx":44
   20797             :  *     # the original version is still in the gil version below.
   20798             :  *     for i in xrange(n_signals):
   20799             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   20800             :  *         for n in xrange(n_samples):
   20801             :  * 
   20802             :  */
   20803          78 :     __pyx_t_4.data = __pyx_v_zi.data;
   20804          78 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   20805          78 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   20806             :     {
   20807          78 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   20808          78 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   20809          78 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   20810             : }
   20811             : 
   20812          78 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   20813          78 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   20814          78 :     __pyx_t_4.suboffsets[0] = -1;
   20815             : 
   20816          78 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   20817          78 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   20818          78 :     __pyx_t_4.suboffsets[1] = -1;
   20819             : 
   20820          78 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20821          78 :     __pyx_v_zi_slice = __pyx_t_4;
   20822          78 :     __pyx_t_4.memview = NULL;
   20823          78 :     __pyx_t_4.data = NULL;
   20824             : 
   20825             :     /* "scipy/signal/_sosfilt.pyx":45
   20826             :  *     for i in xrange(n_signals):
   20827             :  *         zi_slice = zi[i, :, :]
   20828             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   20829             :  * 
   20830             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20831             :  */
   20832          78 :     __pyx_t_5 = __pyx_v_n_samples;
   20833          78 :     __pyx_t_6 = __pyx_t_5;
   20834         982 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   20835         904 :       __pyx_v_n = __pyx_t_7;
   20836             : 
   20837             :       /* "scipy/signal/_sosfilt.pyx":47
   20838             :  *         for n in xrange(n_samples):
   20839             :  * 
   20840             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   20841             :  * 
   20842             :  *             for s in xrange(n_sections):
   20843             :  */
   20844         904 :       __pyx_t_8 = __pyx_v_i;
   20845         904 :       __pyx_t_9 = __pyx_v_n;
   20846         904 :       __pyx_v_x_cur = __Pyx_c_prod_double(__pyx_v_const_1, (*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   20847             : 
   20848             :       /* "scipy/signal/_sosfilt.pyx":49
   20849             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   20850             :  * 
   20851             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   20852             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20853             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20854             :  */
   20855         904 :       __pyx_t_10 = __pyx_v_n_sections;
   20856         904 :       __pyx_t_11 = __pyx_t_10;
   20857        3472 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   20858        2568 :         __pyx_v_s = __pyx_t_12;
   20859             : 
   20860             :         /* "scipy/signal/_sosfilt.pyx":50
   20861             :  * 
   20862             :  *             for s in xrange(n_sections):
   20863             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   20864             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20865             :  *                                   + zi_slice[s, 1])
   20866             :  */
   20867        2568 :         __pyx_t_9 = __pyx_v_s;
   20868        2568 :         __pyx_t_8 = 0;
   20869        2568 :         __pyx_t_13 = __pyx_v_s;
   20870        2568 :         __pyx_t_14 = 0;
   20871        2568 :         __pyx_v_x_new = __Pyx_c_sum_double(__Pyx_c_prod_double((*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_cur), (*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   20872             : 
   20873             :         /* "scipy/signal/_sosfilt.pyx":51
   20874             :  *             for s in xrange(n_sections):
   20875             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20876             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20877             :  *                                   + zi_slice[s, 1])
   20878             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20879             :  */
   20880        2568 :         __pyx_t_14 = __pyx_v_s;
   20881        2568 :         __pyx_t_13 = 1;
   20882        2568 :         __pyx_t_8 = __pyx_v_s;
   20883        2568 :         __pyx_t_9 = 4;
   20884             : 
   20885             :         /* "scipy/signal/_sosfilt.pyx":52
   20886             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20887             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20888             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   20889             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20890             :  *                 x_cur = x_new
   20891             :  */
   20892        2568 :         __pyx_t_15 = __pyx_v_s;
   20893        2568 :         __pyx_t_16 = 1;
   20894             : 
   20895             :         /* "scipy/signal/_sosfilt.pyx":51
   20896             :  *             for s in xrange(n_sections):
   20897             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   20898             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   20899             :  *                                   + zi_slice[s, 1])
   20900             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20901             :  */
   20902        2568 :         __pyx_t_17 = __pyx_v_s;
   20903        2568 :         __pyx_t_18 = 0;
   20904        2568 :         *((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = __Pyx_c_sum_double(__Pyx_c_diff_double(__Pyx_c_prod_double((*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))), __pyx_v_x_cur), __Pyx_c_prod_double((*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))), __pyx_v_x_new)), (*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   20905             : 
   20906             :         /* "scipy/signal/_sosfilt.pyx":53
   20907             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   20908             :  *                                   + zi_slice[s, 1])
   20909             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   20910             :  *                 x_cur = x_new
   20911             :  * 
   20912             :  */
   20913        2568 :         __pyx_t_16 = __pyx_v_s;
   20914        2568 :         __pyx_t_15 = 2;
   20915        2568 :         __pyx_t_9 = __pyx_v_s;
   20916        2568 :         __pyx_t_8 = 5;
   20917        2568 :         __pyx_t_13 = __pyx_v_s;
   20918        2568 :         __pyx_t_14 = 1;
   20919        2568 :         *((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = __Pyx_c_diff_double(__Pyx_c_prod_double((*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))), __pyx_v_x_cur), __Pyx_c_prod_double((*((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_new));
   20920             : 
   20921             :         /* "scipy/signal/_sosfilt.pyx":54
   20922             :  *                                   + zi_slice[s, 1])
   20923             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   20924             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   20925             :  * 
   20926             :  *             x[i, n] = x_cur
   20927             :  */
   20928        2568 :         __pyx_v_x_cur = __pyx_v_x_new;
   20929             :       }
   20930             : 
   20931             :       /* "scipy/signal/_sosfilt.pyx":56
   20932             :  *                 x_cur = x_new
   20933             :  * 
   20934             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   20935             :  * 
   20936             :  * 
   20937             :  */
   20938         904 :       __pyx_t_8 = __pyx_v_i;
   20939         904 :       __pyx_t_9 = __pyx_v_n;
   20940         904 :       *((__pyx_t_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_double_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   20941             :     }
   20942             :   }
   20943             : 
   20944             :   /* "scipy/signal/_sosfilt.pyx":29
   20945             :  * @cython.boundscheck(False)
   20946             :  * @cython.wraparound(False)
   20947             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   20948             :  *                          DTYPE_floating_t [:, ::1] x,
   20949             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20950             :  */
   20951             : 
   20952             :   /* function exit code */
   20953          28 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   20954          28 : }
   20955             : 
   20956           0 : static void __pyx_fuse_4__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   20957           0 :   Py_ssize_t __pyx_v_n_signals;
   20958           0 :   Py_ssize_t __pyx_v_n_samples;
   20959           0 :   Py_ssize_t __pyx_v_n_sections;
   20960           0 :   Py_ssize_t __pyx_v_i;
   20961           0 :   Py_ssize_t __pyx_v_n;
   20962           0 :   Py_ssize_t __pyx_v_s;
   20963           0 :   long double __pyx_v_x_new;
   20964           0 :   long double __pyx_v_x_cur;
   20965           0 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   20966           0 :   long double __pyx_v_const_1;
   20967           0 :   Py_ssize_t __pyx_t_1;
   20968           0 :   Py_ssize_t __pyx_t_2;
   20969           0 :   Py_ssize_t __pyx_t_3;
   20970           0 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   20971           0 :   Py_ssize_t __pyx_t_5;
   20972           0 :   Py_ssize_t __pyx_t_6;
   20973           0 :   Py_ssize_t __pyx_t_7;
   20974           0 :   Py_ssize_t __pyx_t_8;
   20975           0 :   Py_ssize_t __pyx_t_9;
   20976           0 :   Py_ssize_t __pyx_t_10;
   20977           0 :   Py_ssize_t __pyx_t_11;
   20978           0 :   Py_ssize_t __pyx_t_12;
   20979           0 :   Py_ssize_t __pyx_t_13;
   20980           0 :   Py_ssize_t __pyx_t_14;
   20981           0 :   Py_ssize_t __pyx_t_15;
   20982           0 :   Py_ssize_t __pyx_t_16;
   20983           0 :   Py_ssize_t __pyx_t_17;
   20984           0 :   Py_ssize_t __pyx_t_18;
   20985             : 
   20986             :   /* "scipy/signal/_sosfilt.pyx":33
   20987             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   20988             :  *     # Modifies x and zi in place
   20989             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   20990             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   20991             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   20992             :  */
   20993           0 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   20994             : 
   20995             :   /* "scipy/signal/_sosfilt.pyx":34
   20996             :  *     # Modifies x and zi in place
   20997             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   20998             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   20999             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   21000             :  *     cdef Py_ssize_t i, n, s
   21001             :  */
   21002           0 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   21003             : 
   21004             :   /* "scipy/signal/_sosfilt.pyx":35
   21005             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   21006             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   21007             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   21008             :  *     cdef Py_ssize_t i, n, s
   21009             :  *     cdef DTYPE_floating_t x_new, x_cur
   21010             :  */
   21011           0 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   21012             : 
   21013             :   /* "scipy/signal/_sosfilt.pyx":39
   21014             :  *     cdef DTYPE_floating_t x_new, x_cur
   21015             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   21016             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   21017             :  * 
   21018             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   21019             :  */
   21020           0 :   __pyx_v_const_1 = 1.0;
   21021             : 
   21022             :   /* "scipy/signal/_sosfilt.pyx":43
   21023             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   21024             :  *     # the original version is still in the gil version below.
   21025             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   21026             :  *         zi_slice = zi[i, :, :]
   21027             :  *         for n in xrange(n_samples):
   21028             :  */
   21029           0 :   __pyx_t_1 = __pyx_v_n_signals;
   21030           0 :   __pyx_t_2 = __pyx_t_1;
   21031           0 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   21032           0 :     __pyx_v_i = __pyx_t_3;
   21033             : 
   21034             :     /* "scipy/signal/_sosfilt.pyx":44
   21035             :  *     # the original version is still in the gil version below.
   21036             :  *     for i in xrange(n_signals):
   21037             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   21038             :  *         for n in xrange(n_samples):
   21039             :  * 
   21040             :  */
   21041           0 :     __pyx_t_4.data = __pyx_v_zi.data;
   21042           0 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   21043           0 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   21044             :     {
   21045           0 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   21046           0 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   21047           0 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   21048             : }
   21049             : 
   21050           0 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   21051           0 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   21052           0 :     __pyx_t_4.suboffsets[0] = -1;
   21053             : 
   21054           0 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   21055           0 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   21056           0 :     __pyx_t_4.suboffsets[1] = -1;
   21057             : 
   21058           0 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   21059           0 :     __pyx_v_zi_slice = __pyx_t_4;
   21060           0 :     __pyx_t_4.memview = NULL;
   21061           0 :     __pyx_t_4.data = NULL;
   21062             : 
   21063             :     /* "scipy/signal/_sosfilt.pyx":45
   21064             :  *     for i in xrange(n_signals):
   21065             :  *         zi_slice = zi[i, :, :]
   21066             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   21067             :  * 
   21068             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   21069             :  */
   21070           0 :     __pyx_t_5 = __pyx_v_n_samples;
   21071           0 :     __pyx_t_6 = __pyx_t_5;
   21072           0 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   21073           0 :       __pyx_v_n = __pyx_t_7;
   21074             : 
   21075             :       /* "scipy/signal/_sosfilt.pyx":47
   21076             :  *         for n in xrange(n_samples):
   21077             :  * 
   21078             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   21079             :  * 
   21080             :  *             for s in xrange(n_sections):
   21081             :  */
   21082           0 :       __pyx_t_8 = __pyx_v_i;
   21083           0 :       __pyx_t_9 = __pyx_v_n;
   21084           0 :       __pyx_v_x_cur = (__pyx_v_const_1 * (*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   21085             : 
   21086             :       /* "scipy/signal/_sosfilt.pyx":49
   21087             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   21088             :  * 
   21089             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   21090             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21091             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21092             :  */
   21093           0 :       __pyx_t_10 = __pyx_v_n_sections;
   21094           0 :       __pyx_t_11 = __pyx_t_10;
   21095           0 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   21096           0 :         __pyx_v_s = __pyx_t_12;
   21097             : 
   21098             :         /* "scipy/signal/_sosfilt.pyx":50
   21099             :  * 
   21100             :  *             for s in xrange(n_sections):
   21101             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   21102             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21103             :  *                                   + zi_slice[s, 1])
   21104             :  */
   21105           0 :         __pyx_t_9 = __pyx_v_s;
   21106           0 :         __pyx_t_8 = 0;
   21107           0 :         __pyx_t_13 = __pyx_v_s;
   21108           0 :         __pyx_t_14 = 0;
   21109           0 :         __pyx_v_x_new = (((*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_cur) + (*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   21110             : 
   21111             :         /* "scipy/signal/_sosfilt.pyx":51
   21112             :  *             for s in xrange(n_sections):
   21113             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21114             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   21115             :  *                                   + zi_slice[s, 1])
   21116             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21117             :  */
   21118           0 :         __pyx_t_14 = __pyx_v_s;
   21119           0 :         __pyx_t_13 = 1;
   21120           0 :         __pyx_t_8 = __pyx_v_s;
   21121           0 :         __pyx_t_9 = 4;
   21122             : 
   21123             :         /* "scipy/signal/_sosfilt.pyx":52
   21124             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21125             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21126             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   21127             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21128             :  *                 x_cur = x_new
   21129             :  */
   21130           0 :         __pyx_t_15 = __pyx_v_s;
   21131           0 :         __pyx_t_16 = 1;
   21132             : 
   21133             :         /* "scipy/signal/_sosfilt.pyx":51
   21134             :  *             for s in xrange(n_sections):
   21135             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21136             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   21137             :  *                                   + zi_slice[s, 1])
   21138             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21139             :  */
   21140           0 :         __pyx_t_17 = __pyx_v_s;
   21141           0 :         __pyx_t_18 = 0;
   21142           0 :         *((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = ((((*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))) * __pyx_v_x_cur) - ((*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))) * __pyx_v_x_new)) + (*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   21143             : 
   21144             :         /* "scipy/signal/_sosfilt.pyx":53
   21145             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21146             :  *                                   + zi_slice[s, 1])
   21147             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   21148             :  *                 x_cur = x_new
   21149             :  * 
   21150             :  */
   21151           0 :         __pyx_t_16 = __pyx_v_s;
   21152           0 :         __pyx_t_15 = 2;
   21153           0 :         __pyx_t_9 = __pyx_v_s;
   21154           0 :         __pyx_t_8 = 5;
   21155           0 :         __pyx_t_13 = __pyx_v_s;
   21156           0 :         __pyx_t_14 = 1;
   21157           0 :         *((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = (((*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))) * __pyx_v_x_cur) - ((*((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))) * __pyx_v_x_new));
   21158             : 
   21159             :         /* "scipy/signal/_sosfilt.pyx":54
   21160             :  *                                   + zi_slice[s, 1])
   21161             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21162             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   21163             :  * 
   21164             :  *             x[i, n] = x_cur
   21165             :  */
   21166           0 :         __pyx_v_x_cur = __pyx_v_x_new;
   21167             :       }
   21168             : 
   21169             :       /* "scipy/signal/_sosfilt.pyx":56
   21170             :  *                 x_cur = x_new
   21171             :  * 
   21172             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   21173             :  * 
   21174             :  * 
   21175             :  */
   21176           0 :       __pyx_t_8 = __pyx_v_i;
   21177           0 :       __pyx_t_9 = __pyx_v_n;
   21178           0 :       *((long double *) ( /* dim=1 */ ((char *) (((long double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   21179             :     }
   21180             :   }
   21181             : 
   21182             :   /* "scipy/signal/_sosfilt.pyx":29
   21183             :  * @cython.boundscheck(False)
   21184             :  * @cython.wraparound(False)
   21185             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   21186             :  *                          DTYPE_floating_t [:, ::1] x,
   21187             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   21188             :  */
   21189             : 
   21190             :   /* function exit code */
   21191           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   21192           0 : }
   21193             : 
   21194           0 : static void __pyx_fuse_5__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   21195           0 :   Py_ssize_t __pyx_v_n_signals;
   21196           0 :   Py_ssize_t __pyx_v_n_samples;
   21197           0 :   Py_ssize_t __pyx_v_n_sections;
   21198           0 :   Py_ssize_t __pyx_v_i;
   21199           0 :   Py_ssize_t __pyx_v_n;
   21200           0 :   Py_ssize_t __pyx_v_s;
   21201           0 :   __pyx_t_long_double_complex __pyx_v_x_new;
   21202           0 :   __pyx_t_long_double_complex __pyx_v_x_cur;
   21203           0 :   __Pyx_memviewslice __pyx_v_zi_slice = { 0, 0, { 0 }, { 0 }, { 0 } };
   21204           0 :   __pyx_t_long_double_complex __pyx_v_const_1;
   21205           0 :   Py_ssize_t __pyx_t_1;
   21206           0 :   Py_ssize_t __pyx_t_2;
   21207           0 :   Py_ssize_t __pyx_t_3;
   21208           0 :   __Pyx_memviewslice __pyx_t_4 = { 0, 0, { 0 }, { 0 }, { 0 } };
   21209           0 :   Py_ssize_t __pyx_t_5;
   21210           0 :   Py_ssize_t __pyx_t_6;
   21211           0 :   Py_ssize_t __pyx_t_7;
   21212           0 :   Py_ssize_t __pyx_t_8;
   21213           0 :   Py_ssize_t __pyx_t_9;
   21214           0 :   Py_ssize_t __pyx_t_10;
   21215           0 :   Py_ssize_t __pyx_t_11;
   21216           0 :   Py_ssize_t __pyx_t_12;
   21217           0 :   Py_ssize_t __pyx_t_13;
   21218           0 :   Py_ssize_t __pyx_t_14;
   21219           0 :   Py_ssize_t __pyx_t_15;
   21220           0 :   Py_ssize_t __pyx_t_16;
   21221           0 :   Py_ssize_t __pyx_t_17;
   21222           0 :   Py_ssize_t __pyx_t_18;
   21223             : 
   21224             :   /* "scipy/signal/_sosfilt.pyx":33
   21225             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   21226             :  *     # Modifies x and zi in place
   21227             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   21228             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   21229             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   21230             :  */
   21231           0 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   21232             : 
   21233             :   /* "scipy/signal/_sosfilt.pyx":34
   21234             :  *     # Modifies x and zi in place
   21235             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   21236             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   21237             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   21238             :  *     cdef Py_ssize_t i, n, s
   21239             :  */
   21240           0 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   21241             : 
   21242             :   /* "scipy/signal/_sosfilt.pyx":35
   21243             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   21244             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   21245             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   21246             :  *     cdef Py_ssize_t i, n, s
   21247             :  *     cdef DTYPE_floating_t x_new, x_cur
   21248             :  */
   21249           0 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   21250             : 
   21251             :   /* "scipy/signal/_sosfilt.pyx":39
   21252             :  *     cdef DTYPE_floating_t x_new, x_cur
   21253             :  *     cdef DTYPE_floating_t[:, ::1] zi_slice
   21254             :  *     cdef DTYPE_floating_t const_1 = 1.0             # <<<<<<<<<<<<<<
   21255             :  * 
   21256             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   21257             :  */
   21258           0 :   __pyx_v_const_1 = __pyx_t_long_double_complex_from_parts(1.0, 0);
   21259             : 
   21260             :   /* "scipy/signal/_sosfilt.pyx":43
   21261             :  *     # jumping through a few memoryview hoops to reduce array lookups,
   21262             :  *     # the original version is still in the gil version below.
   21263             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   21264             :  *         zi_slice = zi[i, :, :]
   21265             :  *         for n in xrange(n_samples):
   21266             :  */
   21267           0 :   __pyx_t_1 = __pyx_v_n_signals;
   21268           0 :   __pyx_t_2 = __pyx_t_1;
   21269           0 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   21270           0 :     __pyx_v_i = __pyx_t_3;
   21271             : 
   21272             :     /* "scipy/signal/_sosfilt.pyx":44
   21273             :  *     # the original version is still in the gil version below.
   21274             :  *     for i in xrange(n_signals):
   21275             :  *         zi_slice = zi[i, :, :]             # <<<<<<<<<<<<<<
   21276             :  *         for n in xrange(n_samples):
   21277             :  * 
   21278             :  */
   21279           0 :     __pyx_t_4.data = __pyx_v_zi.data;
   21280           0 :     __pyx_t_4.memview = __pyx_v_zi.memview;
   21281           0 :     __PYX_INC_MEMVIEW(&__pyx_t_4, 0);
   21282             :     {
   21283           0 :     Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
   21284           0 :     Py_ssize_t __pyx_tmp_stride = __pyx_v_zi.strides[0];
   21285           0 :         __pyx_t_4.data += __pyx_tmp_idx * __pyx_tmp_stride;
   21286             : }
   21287             : 
   21288           0 : __pyx_t_4.shape[0] = __pyx_v_zi.shape[1];
   21289           0 : __pyx_t_4.strides[0] = __pyx_v_zi.strides[1];
   21290           0 :     __pyx_t_4.suboffsets[0] = -1;
   21291             : 
   21292           0 : __pyx_t_4.shape[1] = __pyx_v_zi.shape[2];
   21293           0 : __pyx_t_4.strides[1] = __pyx_v_zi.strides[2];
   21294           0 :     __pyx_t_4.suboffsets[1] = -1;
   21295             : 
   21296           0 : __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   21297           0 :     __pyx_v_zi_slice = __pyx_t_4;
   21298           0 :     __pyx_t_4.memview = NULL;
   21299           0 :     __pyx_t_4.data = NULL;
   21300             : 
   21301             :     /* "scipy/signal/_sosfilt.pyx":45
   21302             :  *     for i in xrange(n_signals):
   21303             :  *         zi_slice = zi[i, :, :]
   21304             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   21305             :  * 
   21306             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   21307             :  */
   21308           0 :     __pyx_t_5 = __pyx_v_n_samples;
   21309           0 :     __pyx_t_6 = __pyx_t_5;
   21310           0 :     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
   21311           0 :       __pyx_v_n = __pyx_t_7;
   21312             : 
   21313             :       /* "scipy/signal/_sosfilt.pyx":47
   21314             :  *         for n in xrange(n_samples):
   21315             :  * 
   21316             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy             # <<<<<<<<<<<<<<
   21317             :  * 
   21318             :  *             for s in xrange(n_sections):
   21319             :  */
   21320           0 :       __pyx_t_8 = __pyx_v_i;
   21321           0 :       __pyx_t_9 = __pyx_v_n;
   21322           0 :       __pyx_v_x_cur = __Pyx_c_prod_long__double(__pyx_v_const_1, (*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) ))));
   21323             : 
   21324             :       /* "scipy/signal/_sosfilt.pyx":49
   21325             :  *             x_cur = const_1 * x[i, n]  # make sure x_cur is a copy
   21326             :  * 
   21327             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   21328             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21329             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21330             :  */
   21331           0 :       __pyx_t_10 = __pyx_v_n_sections;
   21332           0 :       __pyx_t_11 = __pyx_t_10;
   21333           0 :       for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
   21334           0 :         __pyx_v_s = __pyx_t_12;
   21335             : 
   21336             :         /* "scipy/signal/_sosfilt.pyx":50
   21337             :  * 
   21338             :  *             for s in xrange(n_sections):
   21339             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]             # <<<<<<<<<<<<<<
   21340             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21341             :  *                                   + zi_slice[s, 1])
   21342             :  */
   21343           0 :         __pyx_t_9 = __pyx_v_s;
   21344           0 :         __pyx_t_8 = 0;
   21345           0 :         __pyx_t_13 = __pyx_v_s;
   21346           0 :         __pyx_t_14 = 0;
   21347           0 :         __pyx_v_x_new = __Pyx_c_sum_long__double(__Pyx_c_prod_long__double((*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_cur), (*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) ))));
   21348             : 
   21349             :         /* "scipy/signal/_sosfilt.pyx":51
   21350             :  *             for s in xrange(n_sections):
   21351             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21352             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   21353             :  *                                   + zi_slice[s, 1])
   21354             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21355             :  */
   21356           0 :         __pyx_t_14 = __pyx_v_s;
   21357           0 :         __pyx_t_13 = 1;
   21358           0 :         __pyx_t_8 = __pyx_v_s;
   21359           0 :         __pyx_t_9 = 4;
   21360             : 
   21361             :         /* "scipy/signal/_sosfilt.pyx":52
   21362             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21363             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21364             :  *                                   + zi_slice[s, 1])             # <<<<<<<<<<<<<<
   21365             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21366             :  *                 x_cur = x_new
   21367             :  */
   21368           0 :         __pyx_t_15 = __pyx_v_s;
   21369           0 :         __pyx_t_16 = 1;
   21370             : 
   21371             :         /* "scipy/signal/_sosfilt.pyx":51
   21372             :  *             for s in xrange(n_sections):
   21373             :  *                 x_new = sos[s, 0] * x_cur + zi_slice[s, 0]
   21374             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new             # <<<<<<<<<<<<<<
   21375             :  *                                   + zi_slice[s, 1])
   21376             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21377             :  */
   21378           0 :         __pyx_t_17 = __pyx_v_s;
   21379           0 :         __pyx_t_18 = 0;
   21380           0 :         *((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_17 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_18)) )) = __Pyx_c_sum_long__double(__Pyx_c_diff_long__double(__Pyx_c_prod_long__double((*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_13)) ))), __pyx_v_x_cur), __Pyx_c_prod_long__double((*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_8 * __pyx_v_sos.strides[0]) )) + __pyx_t_9)) ))), __pyx_v_x_new)), (*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_15 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_16)) ))));
   21381             : 
   21382             :         /* "scipy/signal/_sosfilt.pyx":53
   21383             :  *                 zi_slice[s, 0] = (sos[s, 1] * x_cur - sos[s, 4] * x_new
   21384             :  *                                   + zi_slice[s, 1])
   21385             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new             # <<<<<<<<<<<<<<
   21386             :  *                 x_cur = x_new
   21387             :  * 
   21388             :  */
   21389           0 :         __pyx_t_16 = __pyx_v_s;
   21390           0 :         __pyx_t_15 = 2;
   21391           0 :         __pyx_t_9 = __pyx_v_s;
   21392           0 :         __pyx_t_8 = 5;
   21393           0 :         __pyx_t_13 = __pyx_v_s;
   21394           0 :         __pyx_t_14 = 1;
   21395           0 :         *((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_zi_slice.data + __pyx_t_13 * __pyx_v_zi_slice.strides[0]) )) + __pyx_t_14)) )) = __Pyx_c_diff_long__double(__Pyx_c_prod_long__double((*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_16 * __pyx_v_sos.strides[0]) )) + __pyx_t_15)) ))), __pyx_v_x_cur), __Pyx_c_prod_long__double((*((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_9 * __pyx_v_sos.strides[0]) )) + __pyx_t_8)) ))), __pyx_v_x_new));
   21396             : 
   21397             :         /* "scipy/signal/_sosfilt.pyx":54
   21398             :  *                                   + zi_slice[s, 1])
   21399             :  *                 zi_slice[s, 1] = sos[s, 2] * x_cur - sos[s, 5] * x_new
   21400             :  *                 x_cur = x_new             # <<<<<<<<<<<<<<
   21401             :  * 
   21402             :  *             x[i, n] = x_cur
   21403             :  */
   21404           0 :         __pyx_v_x_cur = __pyx_v_x_new;
   21405             :       }
   21406             : 
   21407             :       /* "scipy/signal/_sosfilt.pyx":56
   21408             :  *                 x_cur = x_new
   21409             :  * 
   21410             :  *             x[i, n] = x_cur             # <<<<<<<<<<<<<<
   21411             :  * 
   21412             :  * 
   21413             :  */
   21414           0 :       __pyx_t_8 = __pyx_v_i;
   21415           0 :       __pyx_t_9 = __pyx_v_n;
   21416           0 :       *((__pyx_t_long_double_complex *) ( /* dim=1 */ ((char *) (((__pyx_t_long_double_complex *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_8 * __pyx_v_x.strides[0]) )) + __pyx_t_9)) )) = __pyx_v_x_cur;
   21417             :     }
   21418             :   }
   21419             : 
   21420             :   /* "scipy/signal/_sosfilt.pyx":29
   21421             :  * @cython.boundscheck(False)
   21422             :  * @cython.wraparound(False)
   21423             :  * cdef void _sosfilt_float(DTYPE_floating_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   21424             :  *                          DTYPE_floating_t [:, ::1] x,
   21425             :  *                          DTYPE_floating_t [:, :, ::1] zi) noexcept nogil:
   21426             :  */
   21427             : 
   21428             :   /* function exit code */
   21429           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi_slice, 0);
   21430           0 : }
   21431             : 
   21432             : /* "scipy/signal/_sosfilt.pyx":59
   21433             :  * 
   21434             :  * 
   21435             :  * @cython.cdivision(True)             # <<<<<<<<<<<<<<
   21436             :  * @cython.boundscheck(False)
   21437             :  * @cython.wraparound(False)
   21438             :  */
   21439             : 
   21440             : /* Python wrapper */
   21441             : static PyObject *__pyx_pw_5scipy_6signal_8_sosfilt_1_sosfilt_object(PyObject *__pyx_self, 
   21442             : #if CYTHON_METH_FASTCALL
   21443             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   21444             : #else
   21445             : PyObject *__pyx_args, PyObject *__pyx_kwds
   21446             : #endif
   21447             : ); /*proto*/
   21448             : static PyMethodDef __pyx_mdef_5scipy_6signal_8_sosfilt_1_sosfilt_object = {"_sosfilt_object", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5scipy_6signal_8_sosfilt_1_sosfilt_object, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
   21449           1 : static PyObject *__pyx_pw_5scipy_6signal_8_sosfilt_1_sosfilt_object(PyObject *__pyx_self, 
   21450             : #if CYTHON_METH_FASTCALL
   21451             : PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
   21452             : #else
   21453             : PyObject *__pyx_args, PyObject *__pyx_kwds
   21454             : #endif
   21455             : ) {
   21456           1 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   21457           1 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   21458           1 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   21459             :   #if !CYTHON_METH_FASTCALL
   21460             :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   21461             :   #endif
   21462           1 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   21463           1 :   PyObject* values[3] = {0,0,0};
   21464           1 :   int __pyx_lineno = 0;
   21465           1 :   const char *__pyx_filename = NULL;
   21466           1 :   int __pyx_clineno = 0;
   21467           1 :   PyObject *__pyx_r = 0;
   21468             :   __Pyx_RefNannyDeclarations
   21469           1 :   __Pyx_RefNannySetupContext("_sosfilt_object (wrapper)", 0);
   21470             :   #if !CYTHON_METH_FASTCALL
   21471             :   #if CYTHON_ASSUME_SAFE_MACROS
   21472             :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   21473             :   #else
   21474             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   21475             :   #endif
   21476             :   #endif
   21477           1 :   __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
   21478             :   {
   21479           1 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   21480           1 :     if (__pyx_kwds) {
   21481           0 :       Py_ssize_t kw_args;
   21482           0 :       switch (__pyx_nargs) {
   21483           0 :         case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
   21484           0 :         CYTHON_FALLTHROUGH;
   21485           0 :         case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
   21486           0 :         CYTHON_FALLTHROUGH;
   21487           0 :         case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   21488           0 :         CYTHON_FALLTHROUGH;
   21489           0 :         case  0: break;
   21490           0 :         default: goto __pyx_L5_argtuple_error;
   21491             :       }
   21492           0 :       kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
   21493           0 :       switch (__pyx_nargs) {
   21494           0 :         case  0:
   21495           0 :         if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   21496           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
   21497           0 :           kw_args--;
   21498             :         }
   21499           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error)
   21500           0 :         else goto __pyx_L5_argtuple_error;
   21501           0 :         CYTHON_FALLTHROUGH;
   21502             :         case  1:
   21503           0 :         if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   21504           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
   21505           0 :           kw_args--;
   21506             :         }
   21507           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error)
   21508             :         else {
   21509           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt_object", 1, 3, 3, 1); __PYX_ERR(0, 59, __pyx_L3_error)
   21510             :         }
   21511           0 :         CYTHON_FALLTHROUGH;
   21512             :         case  2:
   21513           0 :         if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   21514           0 :           (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
   21515           0 :           kw_args--;
   21516             :         }
   21517           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error)
   21518             :         else {
   21519           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt_object", 1, 3, 3, 2); __PYX_ERR(0, 59, __pyx_L3_error)
   21520             :         }
   21521             :       }
   21522           0 :       if (unlikely(kw_args > 0)) {
   21523           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   21524           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt_object") < 0)) __PYX_ERR(0, 59, __pyx_L3_error)
   21525             :       }
   21526           1 :     } else if (unlikely(__pyx_nargs != 3)) {
   21527           0 :       goto __pyx_L5_argtuple_error;
   21528             :     } else {
   21529           1 :       values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
   21530           1 :       values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
   21531           1 :       values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
   21532             :     }
   21533           1 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 62, __pyx_L3_error)
   21534           1 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 63, __pyx_L3_error)
   21535           1 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_object(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 64, __pyx_L3_error)
   21536             :   }
   21537           1 :   goto __pyx_L6_skip;
   21538           0 :   __pyx_L5_argtuple_error:;
   21539           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt_object", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 59, __pyx_L3_error)
   21540           1 :   __pyx_L6_skip:;
   21541           1 :   goto __pyx_L4_argument_unpacking_done;
   21542           0 :   __pyx_L3_error:;
   21543             :   {
   21544           0 :     Py_ssize_t __pyx_temp;
   21545           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   21546             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   21547             :     }
   21548             :   }
   21549           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   21550           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   21551           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   21552           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
   21553           0 :   __Pyx_RefNannyFinishContext();
   21554           0 :   return NULL;
   21555           1 :   __pyx_L4_argument_unpacking_done:;
   21556           1 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt__sosfilt_object(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   21557             : 
   21558             :   /* function exit code */
   21559           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   21560           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   21561           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   21562             :   {
   21563           1 :     Py_ssize_t __pyx_temp;
   21564           1 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   21565             :       __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
   21566             :     }
   21567             :   }
   21568             :   __Pyx_RefNannyFinishContext();
   21569             :   return __pyx_r;
   21570             : }
   21571             : 
   21572           1 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt__sosfilt_object(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   21573           1 :   Py_ssize_t __pyx_v_n_signals;
   21574           1 :   Py_ssize_t __pyx_v_n_samples;
   21575           1 :   Py_ssize_t __pyx_v_n_sections;
   21576           1 :   Py_ssize_t __pyx_v_i;
   21577           1 :   Py_ssize_t __pyx_v_n;
   21578           1 :   Py_ssize_t __pyx_v_s;
   21579           1 :   PyObject *__pyx_v_x_n = 0;
   21580           1 :   PyObject *__pyx_r = NULL;
   21581             :   __Pyx_RefNannyDeclarations
   21582           1 :   Py_ssize_t __pyx_t_1;
   21583           1 :   Py_ssize_t __pyx_t_2;
   21584           1 :   Py_ssize_t __pyx_t_3;
   21585           1 :   Py_ssize_t __pyx_t_4;
   21586           1 :   Py_ssize_t __pyx_t_5;
   21587           1 :   Py_ssize_t __pyx_t_6;
   21588           1 :   Py_ssize_t __pyx_t_7;
   21589           1 :   Py_ssize_t __pyx_t_8;
   21590           1 :   Py_ssize_t __pyx_t_9;
   21591           1 :   PyObject *__pyx_t_10 = NULL;
   21592           1 :   Py_ssize_t __pyx_t_11;
   21593           1 :   Py_ssize_t __pyx_t_12;
   21594           1 :   PyObject *__pyx_t_13 = NULL;
   21595           1 :   Py_ssize_t __pyx_t_14;
   21596           1 :   PyObject *__pyx_t_15 = NULL;
   21597           1 :   PyObject **__pyx_t_16;
   21598           1 :   PyObject *__pyx_t_17 = NULL;
   21599           1 :   int __pyx_lineno = 0;
   21600           1 :   const char *__pyx_filename = NULL;
   21601           1 :   int __pyx_clineno = 0;
   21602           1 :   __Pyx_RefNannySetupContext("_sosfilt_object", 1);
   21603             : 
   21604             :   /* "scipy/signal/_sosfilt.pyx":66
   21605             :  *                     object [:, :, ::1] zi):
   21606             :  *     # Modifies x and zi in place
   21607             :  *     cdef Py_ssize_t n_signals = x.shape[0]             # <<<<<<<<<<<<<<
   21608             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   21609             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   21610             :  */
   21611           1 :   __pyx_v_n_signals = (__pyx_v_x.shape[0]);
   21612             : 
   21613             :   /* "scipy/signal/_sosfilt.pyx":67
   21614             :  *     # Modifies x and zi in place
   21615             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   21616             :  *     cdef Py_ssize_t n_samples = x.shape[1]             # <<<<<<<<<<<<<<
   21617             :  *     cdef Py_ssize_t n_sections = sos.shape[0]
   21618             :  *     cdef Py_ssize_t i, n, s
   21619             :  */
   21620           1 :   __pyx_v_n_samples = (__pyx_v_x.shape[1]);
   21621             : 
   21622             :   /* "scipy/signal/_sosfilt.pyx":68
   21623             :  *     cdef Py_ssize_t n_signals = x.shape[0]
   21624             :  *     cdef Py_ssize_t n_samples = x.shape[1]
   21625             :  *     cdef Py_ssize_t n_sections = sos.shape[0]             # <<<<<<<<<<<<<<
   21626             :  *     cdef Py_ssize_t i, n, s
   21627             :  *     cdef object x_n
   21628             :  */
   21629           1 :   __pyx_v_n_sections = (__pyx_v_sos.shape[0]);
   21630             : 
   21631             :   /* "scipy/signal/_sosfilt.pyx":71
   21632             :  *     cdef Py_ssize_t i, n, s
   21633             :  *     cdef object x_n
   21634             :  *     for i in xrange(n_signals):             # <<<<<<<<<<<<<<
   21635             :  *         for n in xrange(n_samples):
   21636             :  *             for s in xrange(n_sections):
   21637             :  */
   21638           1 :   __pyx_t_1 = __pyx_v_n_signals;
   21639           1 :   __pyx_t_2 = __pyx_t_1;
   21640           2 :   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
   21641             :     __pyx_v_i = __pyx_t_3;
   21642             : 
   21643             :     /* "scipy/signal/_sosfilt.pyx":72
   21644             :  *     cdef object x_n
   21645             :  *     for i in xrange(n_signals):
   21646             :  *         for n in xrange(n_samples):             # <<<<<<<<<<<<<<
   21647             :  *             for s in xrange(n_sections):
   21648             :  *                 x_n = x[i, n]  # make a temporary copy
   21649             :  */
   21650             :     __pyx_t_4 = __pyx_v_n_samples;
   21651             :     __pyx_t_5 = __pyx_t_4;
   21652           4 :     for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
   21653             :       __pyx_v_n = __pyx_t_6;
   21654             : 
   21655             :       /* "scipy/signal/_sosfilt.pyx":73
   21656             :  *     for i in xrange(n_signals):
   21657             :  *         for n in xrange(n_samples):
   21658             :  *             for s in xrange(n_sections):             # <<<<<<<<<<<<<<
   21659             :  *                 x_n = x[i, n]  # make a temporary copy
   21660             :  *                 # Use direct II transposed structure:
   21661             :  */
   21662             :       __pyx_t_7 = __pyx_v_n_sections;
   21663             :       __pyx_t_8 = __pyx_t_7;
   21664           6 :       for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
   21665           3 :         __pyx_v_s = __pyx_t_9;
   21666             : 
   21667             :         /* "scipy/signal/_sosfilt.pyx":74
   21668             :  *         for n in xrange(n_samples):
   21669             :  *             for s in xrange(n_sections):
   21670             :  *                 x_n = x[i, n]  # make a temporary copy             # <<<<<<<<<<<<<<
   21671             :  *                 # Use direct II transposed structure:
   21672             :  *                 x[i, n] = sos[s, 0] * x_n + zi[i, s, 0]
   21673             :  */
   21674           3 :         __pyx_t_11 = __pyx_v_i;
   21675           3 :         __pyx_t_12 = __pyx_v_n;
   21676           3 :         __pyx_t_10 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_11 * __pyx_v_x.strides[0]) )) + __pyx_t_12)) ));
   21677           3 :         if (unlikely(__pyx_t_10 == NULL)) __pyx_t_10 = Py_None;
   21678           3 :         __Pyx_INCREF((PyObject*)__pyx_t_10);
   21679           3 :         __Pyx_XDECREF_SET(__pyx_v_x_n, __pyx_t_10);
   21680           3 :         __pyx_t_10 = 0;
   21681             : 
   21682             :         /* "scipy/signal/_sosfilt.pyx":76
   21683             :  *                 x_n = x[i, n]  # make a temporary copy
   21684             :  *                 # Use direct II transposed structure:
   21685             :  *                 x[i, n] = sos[s, 0] * x_n + zi[i, s, 0]             # <<<<<<<<<<<<<<
   21686             :  *                 zi[i, s, 0] = (sos[s, 1] * x_n - sos[s, 4] * x[i, n] +
   21687             :  *                                zi[i, s, 1])
   21688             :  */
   21689           3 :         __pyx_t_12 = __pyx_v_s;
   21690           3 :         __pyx_t_11 = 0;
   21691           3 :         __pyx_t_10 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_12 * __pyx_v_sos.strides[0]) )) + __pyx_t_11)) ));
   21692           3 :         if (unlikely(__pyx_t_10 == NULL)) __pyx_t_10 = Py_None;
   21693           3 :         __Pyx_INCREF((PyObject*)__pyx_t_10);
   21694           3 :         __pyx_t_13 = PyNumber_Multiply(__pyx_t_10, __pyx_v_x_n); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 76, __pyx_L1_error)
   21695           3 :         __Pyx_GOTREF(__pyx_t_13);
   21696           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21697           3 :         __pyx_t_11 = __pyx_v_i;
   21698           3 :         __pyx_t_12 = __pyx_v_s;
   21699           3 :         __pyx_t_14 = 0;
   21700           3 :         __pyx_t_10 = (PyObject *) *((PyObject * *) ( /* dim=2 */ ((char *) (((PyObject * *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_zi.data + __pyx_t_11 * __pyx_v_zi.strides[0]) ) + __pyx_t_12 * __pyx_v_zi.strides[1]) )) + __pyx_t_14)) ));
   21701           3 :         if (unlikely(__pyx_t_10 == NULL)) __pyx_t_10 = Py_None;
   21702           3 :         __Pyx_INCREF((PyObject*)__pyx_t_10);
   21703           3 :         __pyx_t_15 = PyNumber_Add(__pyx_t_13, __pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 76, __pyx_L1_error)
   21704           3 :         __Pyx_GOTREF(__pyx_t_15);
   21705           3 :         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   21706           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21707           3 :         __pyx_t_14 = __pyx_v_i;
   21708           3 :         __pyx_t_12 = __pyx_v_n;
   21709           3 :         __pyx_t_16 = ((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_14 * __pyx_v_x.strides[0]) )) + __pyx_t_12)) ));
   21710           3 :         __Pyx_XGOTREF(*__pyx_t_16);
   21711           6 :         __Pyx_INCREF(__pyx_t_15); __Pyx_XDECREF(*__pyx_t_16);
   21712           3 :         *__pyx_t_16 = __pyx_t_15;
   21713           3 :         __Pyx_XGIVEREF(*__pyx_t_16);
   21714           3 :         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   21715             : 
   21716             :         /* "scipy/signal/_sosfilt.pyx":77
   21717             :  *                 # Use direct II transposed structure:
   21718             :  *                 x[i, n] = sos[s, 0] * x_n + zi[i, s, 0]
   21719             :  *                 zi[i, s, 0] = (sos[s, 1] * x_n - sos[s, 4] * x[i, n] +             # <<<<<<<<<<<<<<
   21720             :  *                                zi[i, s, 1])
   21721             :  *                 zi[i, s, 1] = (sos[s, 2] * x_n - sos[s, 5] * x[i, n])
   21722             :  */
   21723           3 :         __pyx_t_12 = __pyx_v_s;
   21724           3 :         __pyx_t_14 = 1;
   21725           3 :         __pyx_t_15 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_12 * __pyx_v_sos.strides[0]) )) + __pyx_t_14)) ));
   21726           3 :         if (unlikely(__pyx_t_15 == NULL)) __pyx_t_15 = Py_None;
   21727           3 :         __Pyx_INCREF((PyObject*)__pyx_t_15);
   21728           3 :         __pyx_t_10 = PyNumber_Multiply(__pyx_t_15, __pyx_v_x_n); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 77, __pyx_L1_error)
   21729           3 :         __Pyx_GOTREF(__pyx_t_10);
   21730           3 :         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   21731           3 :         __pyx_t_14 = __pyx_v_s;
   21732           3 :         __pyx_t_12 = 4;
   21733           3 :         __pyx_t_15 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_12)) ));
   21734           3 :         if (unlikely(__pyx_t_15 == NULL)) __pyx_t_15 = Py_None;
   21735           3 :         __Pyx_INCREF((PyObject*)__pyx_t_15);
   21736           3 :         __pyx_t_12 = __pyx_v_i;
   21737           3 :         __pyx_t_14 = __pyx_v_n;
   21738           3 :         __pyx_t_13 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_12 * __pyx_v_x.strides[0]) )) + __pyx_t_14)) ));
   21739           3 :         if (unlikely(__pyx_t_13 == NULL)) __pyx_t_13 = Py_None;
   21740           3 :         __Pyx_INCREF((PyObject*)__pyx_t_13);
   21741           3 :         __pyx_t_17 = PyNumber_Multiply(__pyx_t_15, __pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 77, __pyx_L1_error)
   21742           3 :         __Pyx_GOTREF(__pyx_t_17);
   21743           3 :         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   21744           3 :         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   21745           3 :         __pyx_t_13 = PyNumber_Subtract(__pyx_t_10, __pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 77, __pyx_L1_error)
   21746           3 :         __Pyx_GOTREF(__pyx_t_13);
   21747           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21748           3 :         __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
   21749             : 
   21750             :         /* "scipy/signal/_sosfilt.pyx":78
   21751             :  *                 x[i, n] = sos[s, 0] * x_n + zi[i, s, 0]
   21752             :  *                 zi[i, s, 0] = (sos[s, 1] * x_n - sos[s, 4] * x[i, n] +
   21753             :  *                                zi[i, s, 1])             # <<<<<<<<<<<<<<
   21754             :  *                 zi[i, s, 1] = (sos[s, 2] * x_n - sos[s, 5] * x[i, n])
   21755             :  * 
   21756             :  */
   21757           3 :         __pyx_t_14 = __pyx_v_i;
   21758           3 :         __pyx_t_12 = __pyx_v_s;
   21759           3 :         __pyx_t_11 = 1;
   21760           3 :         __pyx_t_17 = (PyObject *) *((PyObject * *) ( /* dim=2 */ ((char *) (((PyObject * *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_zi.data + __pyx_t_14 * __pyx_v_zi.strides[0]) ) + __pyx_t_12 * __pyx_v_zi.strides[1]) )) + __pyx_t_11)) ));
   21761           3 :         if (unlikely(__pyx_t_17 == NULL)) __pyx_t_17 = Py_None;
   21762           3 :         __Pyx_INCREF((PyObject*)__pyx_t_17);
   21763             : 
   21764             :         /* "scipy/signal/_sosfilt.pyx":77
   21765             :  *                 # Use direct II transposed structure:
   21766             :  *                 x[i, n] = sos[s, 0] * x_n + zi[i, s, 0]
   21767             :  *                 zi[i, s, 0] = (sos[s, 1] * x_n - sos[s, 4] * x[i, n] +             # <<<<<<<<<<<<<<
   21768             :  *                                zi[i, s, 1])
   21769             :  *                 zi[i, s, 1] = (sos[s, 2] * x_n - sos[s, 5] * x[i, n])
   21770             :  */
   21771           3 :         __pyx_t_10 = PyNumber_Add(__pyx_t_13, __pyx_t_17); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 77, __pyx_L1_error)
   21772           3 :         __Pyx_GOTREF(__pyx_t_10);
   21773           3 :         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   21774           3 :         __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
   21775           3 :         __pyx_t_11 = __pyx_v_i;
   21776           3 :         __pyx_t_12 = __pyx_v_s;
   21777           3 :         __pyx_t_14 = 0;
   21778           3 :         __pyx_t_16 = ((PyObject * *) ( /* dim=2 */ ((char *) (((PyObject * *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_zi.data + __pyx_t_11 * __pyx_v_zi.strides[0]) ) + __pyx_t_12 * __pyx_v_zi.strides[1]) )) + __pyx_t_14)) ));
   21779           3 :         __Pyx_XGOTREF(*__pyx_t_16);
   21780           6 :         __Pyx_INCREF(__pyx_t_10); __Pyx_XDECREF(*__pyx_t_16);
   21781           3 :         *__pyx_t_16 = __pyx_t_10;
   21782           3 :         __Pyx_XGIVEREF(*__pyx_t_16);
   21783           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21784             : 
   21785             :         /* "scipy/signal/_sosfilt.pyx":79
   21786             :  *                 zi[i, s, 0] = (sos[s, 1] * x_n - sos[s, 4] * x[i, n] +
   21787             :  *                                zi[i, s, 1])
   21788             :  *                 zi[i, s, 1] = (sos[s, 2] * x_n - sos[s, 5] * x[i, n])             # <<<<<<<<<<<<<<
   21789             :  * 
   21790             :  * 
   21791             :  */
   21792           3 :         __pyx_t_14 = __pyx_v_s;
   21793           3 :         __pyx_t_12 = 2;
   21794           3 :         __pyx_t_10 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_14 * __pyx_v_sos.strides[0]) )) + __pyx_t_12)) ));
   21795           3 :         if (unlikely(__pyx_t_10 == NULL)) __pyx_t_10 = Py_None;
   21796           3 :         __Pyx_INCREF((PyObject*)__pyx_t_10);
   21797           3 :         __pyx_t_17 = PyNumber_Multiply(__pyx_t_10, __pyx_v_x_n); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 79, __pyx_L1_error)
   21798           3 :         __Pyx_GOTREF(__pyx_t_17);
   21799           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21800           3 :         __pyx_t_12 = __pyx_v_s;
   21801           3 :         __pyx_t_14 = 5;
   21802           3 :         __pyx_t_10 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_sos.data + __pyx_t_12 * __pyx_v_sos.strides[0]) )) + __pyx_t_14)) ));
   21803           3 :         if (unlikely(__pyx_t_10 == NULL)) __pyx_t_10 = Py_None;
   21804           3 :         __Pyx_INCREF((PyObject*)__pyx_t_10);
   21805           3 :         __pyx_t_14 = __pyx_v_i;
   21806           3 :         __pyx_t_12 = __pyx_v_n;
   21807           3 :         __pyx_t_13 = (PyObject *) *((PyObject * *) ( /* dim=1 */ ((char *) (((PyObject * *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_14 * __pyx_v_x.strides[0]) )) + __pyx_t_12)) ));
   21808           3 :         if (unlikely(__pyx_t_13 == NULL)) __pyx_t_13 = Py_None;
   21809           3 :         __Pyx_INCREF((PyObject*)__pyx_t_13);
   21810           3 :         __pyx_t_15 = PyNumber_Multiply(__pyx_t_10, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 79, __pyx_L1_error)
   21811           3 :         __Pyx_GOTREF(__pyx_t_15);
   21812           3 :         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   21813           3 :         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   21814           3 :         __pyx_t_13 = PyNumber_Subtract(__pyx_t_17, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 79, __pyx_L1_error)
   21815           3 :         __Pyx_GOTREF(__pyx_t_13);
   21816           3 :         __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
   21817           3 :         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   21818           3 :         __pyx_t_12 = __pyx_v_i;
   21819           3 :         __pyx_t_14 = __pyx_v_s;
   21820           3 :         __pyx_t_11 = 1;
   21821           3 :         __pyx_t_16 = ((PyObject * *) ( /* dim=2 */ ((char *) (((PyObject * *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_zi.data + __pyx_t_12 * __pyx_v_zi.strides[0]) ) + __pyx_t_14 * __pyx_v_zi.strides[1]) )) + __pyx_t_11)) ));
   21822           3 :         __Pyx_XGOTREF(*__pyx_t_16);
   21823           6 :         __Pyx_INCREF(__pyx_t_13); __Pyx_XDECREF(*__pyx_t_16);
   21824           3 :         *__pyx_t_16 = __pyx_t_13;
   21825           3 :         __Pyx_XGIVEREF(*__pyx_t_16);
   21826           6 :         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   21827             :       }
   21828             :     }
   21829             :   }
   21830             : 
   21831             :   /* "scipy/signal/_sosfilt.pyx":59
   21832             :  * 
   21833             :  * 
   21834             :  * @cython.cdivision(True)             # <<<<<<<<<<<<<<
   21835             :  * @cython.boundscheck(False)
   21836             :  * @cython.wraparound(False)
   21837             :  */
   21838             : 
   21839             :   /* function exit code */
   21840           1 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   21841           1 :   goto __pyx_L0;
   21842           0 :   __pyx_L1_error:;
   21843           0 :   __Pyx_XDECREF(__pyx_t_10);
   21844           0 :   __Pyx_XDECREF(__pyx_t_13);
   21845           0 :   __Pyx_XDECREF(__pyx_t_15);
   21846           0 :   __Pyx_XDECREF(__pyx_t_17);
   21847           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
   21848           0 :   __pyx_r = NULL;
   21849           1 :   __pyx_L0:;
   21850           1 :   __Pyx_XDECREF(__pyx_v_x_n);
   21851           1 :   __Pyx_XGIVEREF(__pyx_r);
   21852           1 :   __Pyx_RefNannyFinishContext();
   21853           1 :   return __pyx_r;
   21854             : }
   21855             : 
   21856             : /* "scipy/signal/_sosfilt.pyx":82
   21857             :  * 
   21858             :  * 
   21859             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   21860             :  *              DTYPE_t [:, ::1] x,
   21861             :  *              DTYPE_t [:, :, ::1] zi):
   21862             :  */
   21863             : 
   21864             : /* Python wrapper */
   21865             : static PyObject *__pyx_pw_5scipy_6signal_8_sosfilt_3_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   21866             : static PyMethodDef __pyx_mdef_5scipy_6signal_8_sosfilt_3_sosfilt = {"_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_5scipy_6signal_8_sosfilt_3_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   21867         134 : static PyObject *__pyx_pw_5scipy_6signal_8_sosfilt_3_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   21868         134 :   PyObject *__pyx_v_signatures = 0;
   21869         134 :   PyObject *__pyx_v_args = 0;
   21870         134 :   PyObject *__pyx_v_kwargs = 0;
   21871         134 :   CYTHON_UNUSED PyObject *__pyx_v_defaults = 0;
   21872         134 :   PyObject *__pyx_v__fused_sigindex = 0;
   21873         134 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   21874         134 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   21875         134 :   PyObject* values[5] = {0,0,0,0,0};
   21876         134 :   int __pyx_lineno = 0;
   21877         134 :   const char *__pyx_filename = NULL;
   21878         134 :   int __pyx_clineno = 0;
   21879         134 :   PyObject *__pyx_r = 0;
   21880             :   __Pyx_RefNannyDeclarations
   21881         134 :   __Pyx_RefNannySetupContext("__pyx_fused_cpdef (wrapper)", 0);
   21882             :   #if CYTHON_ASSUME_SAFE_MACROS
   21883         134 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   21884             :   #else
   21885             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   21886             :   #endif
   21887         134 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   21888             :   {
   21889         134 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,&__pyx_n_s_fused_sigindex,0};
   21890         134 :     __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
   21891         134 :     values[4] = __Pyx_Arg_NewRef_VARARGS(__pyx_dynamic_args->__pyx_arg__fused_sigindex);
   21892         134 :     if (__pyx_kwds) {
   21893           0 :       Py_ssize_t kw_args;
   21894           0 :       switch (__pyx_nargs) {
   21895           0 :         case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
   21896           0 :         CYTHON_FALLTHROUGH;
   21897           0 :         case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
   21898           0 :         CYTHON_FALLTHROUGH;
   21899           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   21900           0 :         CYTHON_FALLTHROUGH;
   21901           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   21902           0 :         CYTHON_FALLTHROUGH;
   21903           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   21904           0 :         CYTHON_FALLTHROUGH;
   21905           0 :         case  0: break;
   21906           0 :         default: goto __pyx_L5_argtuple_error;
   21907             :       }
   21908           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   21909           0 :       switch (__pyx_nargs) {
   21910           0 :         case  0:
   21911           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_signatures)) != 0)) {
   21912           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   21913           0 :           kw_args--;
   21914             :         }
   21915           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   21916           0 :         else goto __pyx_L5_argtuple_error;
   21917           0 :         CYTHON_FALLTHROUGH;
   21918             :         case  1:
   21919           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) {
   21920           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   21921           0 :           kw_args--;
   21922             :         }
   21923           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   21924             :         else {
   21925           0 :           __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 4, 5, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   21926             :         }
   21927           0 :         CYTHON_FALLTHROUGH;
   21928             :         case  2:
   21929           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs)) != 0)) {
   21930           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   21931           0 :           kw_args--;
   21932             :         }
   21933           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   21934             :         else {
   21935           0 :           __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 4, 5, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   21936             :         }
   21937           0 :         CYTHON_FALLTHROUGH;
   21938             :         case  3:
   21939           0 :         if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_defaults)) != 0)) {
   21940           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
   21941           0 :           kw_args--;
   21942             :         }
   21943           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   21944             :         else {
   21945           0 :           __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 4, 5, 3); __PYX_ERR(0, 82, __pyx_L3_error)
   21946             :         }
   21947           0 :         CYTHON_FALLTHROUGH;
   21948             :         case  4:
   21949           0 :         if (kw_args > 0) {
   21950           0 :           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fused_sigindex);
   21951           0 :           if (value) { values[4] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
   21952           0 :           else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   21953             :         }
   21954             :       }
   21955           0 :       if (unlikely(kw_args > 0)) {
   21956           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   21957           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_fused_cpdef") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   21958             :       }
   21959             :     } else {
   21960         134 :       switch (__pyx_nargs) {
   21961           0 :         case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
   21962         134 :         CYTHON_FALLTHROUGH;
   21963         134 :         case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
   21964         134 :         values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   21965         134 :         values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   21966         134 :         values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   21967         134 :         break;
   21968           0 :         default: goto __pyx_L5_argtuple_error;
   21969             :       }
   21970             :     }
   21971         134 :     __pyx_v_signatures = values[0];
   21972         134 :     __pyx_v_args = values[1];
   21973         134 :     __pyx_v_kwargs = values[2];
   21974         134 :     __pyx_v_defaults = values[3];
   21975         134 :     __pyx_v__fused_sigindex = values[4];
   21976             :   }
   21977         134 :   goto __pyx_L6_skip;
   21978           0 :   __pyx_L5_argtuple_error:;
   21979           0 :   __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 0, 4, 5, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   21980         134 :   __pyx_L6_skip:;
   21981         134 :   goto __pyx_L4_argument_unpacking_done;
   21982           0 :   __pyx_L3_error:;
   21983             :   {
   21984           0 :     Py_ssize_t __pyx_temp;
   21985           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   21986             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   21987             :     }
   21988             :   }
   21989           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
   21990           0 :   __Pyx_RefNannyFinishContext();
   21991           0 :   return NULL;
   21992         134 :   __pyx_L4_argument_unpacking_done:;
   21993         134 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_2_sosfilt(__pyx_self, __pyx_v_signatures, __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults, __pyx_v__fused_sigindex);
   21994             : 
   21995             :   /* function exit code */
   21996             :   {
   21997         134 :     Py_ssize_t __pyx_temp;
   21998         134 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   21999             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   22000             :     }
   22001             :   }
   22002             :   __Pyx_RefNannyFinishContext();
   22003             :   return __pyx_r;
   22004             : }
   22005             : 
   22006         134 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_2_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults, PyObject *__pyx_v__fused_sigindex) {
   22007         134 :   PyObject *__pyx_v_search_list = 0;
   22008         134 :   PyObject *__pyx_v_sigindex_node = 0;
   22009         134 :   PyObject *__pyx_v_dest_sig = NULL;
   22010         134 :   PyTypeObject *__pyx_v_ndarray = 0;
   22011         134 :   PyObject *__pyx_v_arg_as_memoryview = 0;
   22012         134 :   __Pyx_memviewslice __pyx_v_memslice;
   22013         134 :   Py_ssize_t __pyx_v_itemsize;
   22014         134 :   CYTHON_UNUSED int __pyx_v_dtype_signed;
   22015         134 :   Py_UCS4 __pyx_v_kind;
   22016         134 :   PyObject *__pyx_v_arg = NULL;
   22017         134 :   PyObject *__pyx_v_dtype = NULL;
   22018         134 :   PyObject *__pyx_v_arg_base = NULL;
   22019         134 :   PyObject *__pyx_v_sig = NULL;
   22020         134 :   PyObject *__pyx_v_sig_series = NULL;
   22021         134 :   PyObject *__pyx_v_last_type = NULL;
   22022         134 :   PyObject *__pyx_v_sig_type = NULL;
   22023         134 :   PyObject *__pyx_v_sigindex_matches = NULL;
   22024         134 :   PyObject *__pyx_v_sigindex_candidates = NULL;
   22025         134 :   PyObject *__pyx_v_dst_type = NULL;
   22026         134 :   PyObject *__pyx_v_found_matches = NULL;
   22027         134 :   PyObject *__pyx_v_found_candidates = NULL;
   22028         134 :   PyObject *__pyx_v_sn = NULL;
   22029         134 :   PyObject *__pyx_v_type_match = NULL;
   22030         134 :   PyObject *__pyx_v_candidates = NULL;
   22031         134 :   PyObject *__pyx_r = NULL;
   22032             :   __Pyx_RefNannyDeclarations
   22033         134 :   PyObject *__pyx_t_1 = NULL;
   22034         134 :   int __pyx_t_2;
   22035         134 :   int __pyx_t_3;
   22036         134 :   int __pyx_t_4;
   22037         134 :   Py_ssize_t __pyx_t_5;
   22038         134 :   PyObject *__pyx_t_6 = NULL;
   22039         134 :   long __pyx_t_7;
   22040         134 :   PyObject *__pyx_t_8 = NULL;
   22041         134 :   PyObject *__pyx_t_9 = NULL;
   22042         134 :   PyObject *__pyx_t_10 = NULL;
   22043         134 :   int __pyx_t_11;
   22044         134 :   __Pyx_memviewslice __pyx_t_12;
   22045         134 :   PyObject *__pyx_t_13 = NULL;
   22046         134 :   Py_ssize_t __pyx_t_14;
   22047         134 :   int __pyx_t_15;
   22048         134 :   PyObject *__pyx_t_16 = NULL;
   22049         134 :   PyObject *__pyx_t_17 = NULL;
   22050         134 :   unsigned int __pyx_t_18;
   22051         134 :   Py_ssize_t __pyx_t_19;
   22052         134 :   int __pyx_t_20;
   22053         134 :   int __pyx_lineno = 0;
   22054         134 :   const char *__pyx_filename = NULL;
   22055         134 :   int __pyx_clineno = 0;
   22056         134 :   __Pyx_RefNannySetupContext("_sosfilt", 0);
   22057         134 :   __Pyx_INCREF(__pyx_v_kwargs);
   22058         134 :   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22059         134 :   __Pyx_GOTREF(__pyx_t_1);
   22060         134 :   __Pyx_INCREF(Py_None);
   22061         134 :   __Pyx_GIVEREF(Py_None);
   22062         134 :   if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, Py_None)) __PYX_ERR(0, 82, __pyx_L1_error);
   22063         134 :   __pyx_v_dest_sig = ((PyObject*)__pyx_t_1);
   22064         134 :   __pyx_t_1 = 0;
   22065         134 :   __pyx_t_3 = (__pyx_v_kwargs != Py_None);
   22066         134 :   if (__pyx_t_3) {
   22067           0 :   } else {
   22068         134 :     __pyx_t_2 = __pyx_t_3;
   22069         134 :     goto __pyx_L4_bool_binop_done;
   22070             :   }
   22071           0 :   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22072           0 :   __pyx_t_4 = (!__pyx_t_3);
   22073           0 :   __pyx_t_2 = __pyx_t_4;
   22074         134 :   __pyx_L4_bool_binop_done:;
   22075         134 :   if (__pyx_t_2) {
   22076           0 :     __Pyx_INCREF(Py_None);
   22077           0 :     __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None);
   22078             :   }
   22079         134 :   __pyx_t_1 = ((PyObject *)__Pyx_ImportNumPyArrayTypeIfAvailable()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22080         134 :   __Pyx_GOTREF(__pyx_t_1);
   22081         134 :   __pyx_v_ndarray = ((PyTypeObject*)__pyx_t_1);
   22082         134 :   __pyx_t_1 = 0;
   22083         134 :   __pyx_v_itemsize = -1L;
   22084         134 :   if (unlikely(__pyx_v_args == Py_None)) {
   22085           0 :     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
   22086           0 :     __PYX_ERR(0, 82, __pyx_L1_error)
   22087             :   }
   22088         134 :   __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22089         134 :   __pyx_t_2 = (0 < __pyx_t_5);
   22090         134 :   if (__pyx_t_2) {
   22091         134 :     if (unlikely(__pyx_v_args == Py_None)) {
   22092             :       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   22093             :       __PYX_ERR(0, 82, __pyx_L1_error)
   22094             :     }
   22095         134 :     __pyx_t_1 = __Pyx_GetItemInt_Tuple(((PyObject*)__pyx_v_args), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22096         134 :     __Pyx_GOTREF(__pyx_t_1);
   22097         134 :     __pyx_v_arg = __pyx_t_1;
   22098         134 :     __pyx_t_1 = 0;
   22099         134 :     goto __pyx_L6;
   22100             :   }
   22101           0 :   __pyx_t_4 = (__pyx_v_kwargs != Py_None);
   22102           0 :   if (__pyx_t_4) {
   22103           0 :   } else {
   22104           0 :     __pyx_t_2 = __pyx_t_4;
   22105           0 :     goto __pyx_L7_bool_binop_done;
   22106             :   }
   22107           0 :   if (unlikely(__pyx_v_kwargs == Py_None)) {
   22108             :     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   22109             :     __PYX_ERR(0, 82, __pyx_L1_error)
   22110             :   }
   22111           0 :   __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_sos, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22112             :   __pyx_t_2 = __pyx_t_4;
   22113           0 :   __pyx_L7_bool_binop_done:;
   22114           0 :   if (likely(__pyx_t_2)) {
   22115           0 :     if (unlikely(__pyx_v_kwargs == Py_None)) {
   22116           0 :       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   22117           0 :       __PYX_ERR(0, 82, __pyx_L1_error)
   22118             :     }
   22119           0 :     __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_sos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22120           0 :     __Pyx_GOTREF(__pyx_t_1);
   22121           0 :     __pyx_v_arg = __pyx_t_1;
   22122           0 :     __pyx_t_1 = 0;
   22123           0 :     goto __pyx_L6;
   22124             :   }
   22125             :   /*else*/ {
   22126           0 :     if (unlikely(__pyx_v_args == Py_None)) {
   22127             :       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
   22128             :       __PYX_ERR(0, 82, __pyx_L1_error)
   22129             :     }
   22130           0 :     __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22131           0 :     __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22132           0 :     __Pyx_GOTREF(__pyx_t_1);
   22133           0 :     __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22134           0 :     __Pyx_GOTREF(__pyx_t_6);
   22135           0 :     __Pyx_INCREF(__pyx_int_3);
   22136           0 :     __Pyx_GIVEREF(__pyx_int_3);
   22137           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_3)) __PYX_ERR(0, 82, __pyx_L1_error);
   22138           0 :     __Pyx_INCREF(__pyx_n_s_s);
   22139           0 :     __Pyx_GIVEREF(__pyx_n_s_s);
   22140           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_s)) __PYX_ERR(0, 82, __pyx_L1_error);
   22141           0 :     __Pyx_GIVEREF(__pyx_t_1);
   22142           0 :     if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error);
   22143           0 :     __pyx_t_1 = 0;
   22144           0 :     __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22145           0 :     __Pyx_GOTREF(__pyx_t_1);
   22146           0 :     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22147           0 :     __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22148           0 :     __Pyx_GOTREF(__pyx_t_6);
   22149           0 :     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22150           0 :     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
   22151           0 :     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22152           0 :     __PYX_ERR(0, 82, __pyx_L1_error)
   22153             :   }
   22154         134 :   __pyx_L6:;
   22155         134 :   while (1) {
   22156         134 :     __pyx_t_2 = (__pyx_v_ndarray != ((PyTypeObject*)Py_None));
   22157         134 :     if (__pyx_t_2) {
   22158         134 :       __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); 
   22159         134 :       if (__pyx_t_2) {
   22160         134 :         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22161         134 :         __Pyx_GOTREF(__pyx_t_6);
   22162         134 :         __pyx_v_dtype = __pyx_t_6;
   22163         134 :         __pyx_t_6 = 0;
   22164         134 :         goto __pyx_L12;
   22165             :       }
   22166           0 :       __pyx_t_2 = __pyx_memoryview_check(__pyx_v_arg); 
   22167           0 :       if (__pyx_t_2) {
   22168           0 :         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22169           0 :         __Pyx_GOTREF(__pyx_t_6);
   22170           0 :         __pyx_v_arg_base = __pyx_t_6;
   22171           0 :         __pyx_t_6 = 0;
   22172           0 :         __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); 
   22173           0 :         if (__pyx_t_2) {
   22174           0 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22175           0 :           __Pyx_GOTREF(__pyx_t_6);
   22176           0 :           __pyx_v_dtype = __pyx_t_6;
   22177           0 :           __pyx_t_6 = 0;
   22178           0 :           goto __pyx_L13;
   22179             :         }
   22180             :         /*else*/ {
   22181           0 :           __Pyx_INCREF(Py_None);
   22182             :           __pyx_v_dtype = Py_None;
   22183             :         }
   22184           0 :         __pyx_L13:;
   22185           0 :         goto __pyx_L12;
   22186             :       }
   22187             :       /*else*/ {
   22188           0 :         __Pyx_INCREF(Py_None);
   22189             :         __pyx_v_dtype = Py_None;
   22190             :       }
   22191         134 :       __pyx_L12:;
   22192         134 :       __pyx_v_itemsize = -1L;
   22193         134 :       __pyx_t_2 = (__pyx_v_dtype != Py_None);
   22194         134 :       if (__pyx_t_2) {
   22195         134 :         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22196         134 :         __Pyx_GOTREF(__pyx_t_6);
   22197         134 :         __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22198         134 :         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22199         134 :         __pyx_v_itemsize = __pyx_t_5;
   22200         134 :         __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22201         134 :         __Pyx_GOTREF(__pyx_t_6);
   22202         134 :         __pyx_t_7 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_7 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22203         134 :         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22204         134 :         __pyx_v_kind = __pyx_t_7;
   22205         134 :         __pyx_v_dtype_signed = (__pyx_v_kind == 0x69);
   22206         134 :         switch (__pyx_v_kind) {
   22207             :           case 0x69:
   22208             :           case 0x75:
   22209             :           break;
   22210         105 :           case 0x66:
   22211         105 :           __pyx_t_4 = ((sizeof(float)) == __pyx_v_itemsize);
   22212         105 :           if (__pyx_t_4) {
   22213          16 :           } else {
   22214          89 :             __pyx_t_2 = __pyx_t_4;
   22215          89 :             goto __pyx_L16_bool_binop_done;
   22216             :           }
   22217          16 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22218          16 :           __Pyx_GOTREF(__pyx_t_6);
   22219          16 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22220          16 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22221          16 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22222          16 :           __pyx_t_2 = __pyx_t_4;
   22223         105 :           __pyx_L16_bool_binop_done:;
   22224         105 :           if (__pyx_t_2) {
   22225          16 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22226          16 :             goto __pyx_L10_break;
   22227             :           }
   22228          89 :           __pyx_t_4 = ((sizeof(double)) == __pyx_v_itemsize);
   22229          89 :           if (__pyx_t_4) {
   22230          89 :           } else {
   22231           0 :             __pyx_t_2 = __pyx_t_4;
   22232           0 :             goto __pyx_L19_bool_binop_done;
   22233             :           }
   22234          89 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22235          89 :           __Pyx_GOTREF(__pyx_t_6);
   22236          89 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22237          89 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22238          89 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22239          89 :           __pyx_t_2 = __pyx_t_4;
   22240          89 :           __pyx_L19_bool_binop_done:;
   22241          89 :           if (__pyx_t_2) {
   22242          89 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22243          89 :             goto __pyx_L10_break;
   22244             :           }
   22245           0 :           __pyx_t_4 = ((sizeof(long double)) == __pyx_v_itemsize);
   22246           0 :           if (__pyx_t_4) {
   22247           0 :           } else {
   22248           0 :             __pyx_t_2 = __pyx_t_4;
   22249           0 :             goto __pyx_L22_bool_binop_done;
   22250             :           }
   22251           0 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22252           0 :           __Pyx_GOTREF(__pyx_t_6);
   22253           0 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22254           0 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22255           0 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22256           0 :           __pyx_t_2 = __pyx_t_4;
   22257           0 :           __pyx_L22_bool_binop_done:;
   22258           0 :           if (__pyx_t_2) {
   22259           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_long_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22260           0 :             goto __pyx_L10_break;
   22261             :           }
   22262             :           break;
   22263          28 :           case 99:
   22264          28 :           __pyx_t_4 = ((sizeof(__pyx_t_float_complex)) == __pyx_v_itemsize);
   22265          28 :           if (__pyx_t_4) {
   22266           0 :           } else {
   22267          28 :             __pyx_t_2 = __pyx_t_4;
   22268          28 :             goto __pyx_L25_bool_binop_done;
   22269             :           }
   22270           0 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22271           0 :           __Pyx_GOTREF(__pyx_t_6);
   22272           0 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22273           0 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22274           0 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22275           0 :           __pyx_t_2 = __pyx_t_4;
   22276          28 :           __pyx_L25_bool_binop_done:;
   22277          28 :           if (__pyx_t_2) {
   22278           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_float_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22279           0 :             goto __pyx_L10_break;
   22280             :           }
   22281          28 :           __pyx_t_4 = ((sizeof(__pyx_t_double_complex)) == __pyx_v_itemsize);
   22282          28 :           if (__pyx_t_4) {
   22283          28 :           } else {
   22284           0 :             __pyx_t_2 = __pyx_t_4;
   22285           0 :             goto __pyx_L28_bool_binop_done;
   22286             :           }
   22287          28 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22288          28 :           __Pyx_GOTREF(__pyx_t_6);
   22289          28 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22290          28 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22291          28 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22292          28 :           __pyx_t_2 = __pyx_t_4;
   22293          28 :           __pyx_L28_bool_binop_done:;
   22294          28 :           if (__pyx_t_2) {
   22295          28 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_double_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22296          28 :             goto __pyx_L10_break;
   22297             :           }
   22298           0 :           __pyx_t_4 = ((sizeof(__pyx_t_long_double_complex)) == __pyx_v_itemsize);
   22299           0 :           if (__pyx_t_4) {
   22300           0 :           } else {
   22301           0 :             __pyx_t_2 = __pyx_t_4;
   22302           0 :             goto __pyx_L31_bool_binop_done;
   22303             :           }
   22304           0 :           __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22305           0 :           __Pyx_GOTREF(__pyx_t_6);
   22306           0 :           __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error)
   22307           0 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22308           0 :           __pyx_t_4 = (((Py_ssize_t)__pyx_t_5) == 2);
   22309           0 :           __pyx_t_2 = __pyx_t_4;
   22310           0 :           __pyx_L31_bool_binop_done:;
   22311           0 :           if (__pyx_t_2) {
   22312           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_long_double_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22313           0 :             goto __pyx_L10_break;
   22314             :           }
   22315             :           break;
   22316             :           case 79:
   22317             :           break;
   22318             :           default: break;
   22319             :         }
   22320             :       }
   22321             :     }
   22322           1 :     __pyx_t_2 = (__pyx_v_arg == Py_None);
   22323           1 :     if (__pyx_t_2) {
   22324           0 :       if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22325           0 :       goto __pyx_L10_break;
   22326             :     }
   22327             :     {
   22328           1 :       __Pyx_PyThreadState_declare
   22329           1 :       __Pyx_PyThreadState_assign
   22330           1 :       __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
   22331           1 :       __Pyx_XGOTREF(__pyx_t_8);
   22332           1 :       __Pyx_XGOTREF(__pyx_t_9);
   22333           1 :       __Pyx_XGOTREF(__pyx_t_10);
   22334             :       /*try:*/ {
   22335           1 :         __pyx_t_6 = PyMemoryView_FromObject(__pyx_v_arg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L34_error)
   22336           1 :         __Pyx_GOTREF(__pyx_t_6);
   22337           1 :         __pyx_v_arg_as_memoryview = ((PyObject*)__pyx_t_6);
   22338           1 :         __pyx_t_6 = 0;
   22339             :       }
   22340             :       /*else:*/ {
   22341           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22342           1 :         if (!__pyx_t_4) {
   22343           1 :           goto __pyx_L45_next_or;
   22344             :         } else {
   22345           0 :         }
   22346           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22347           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(float)));
   22348           0 :         if (!__pyx_t_4) {
   22349             :         } else {
   22350           0 :           goto __pyx_L44_next_and;
   22351             :         }
   22352           1 :         __pyx_L45_next_or:;
   22353           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(float)));
   22354           1 :         if (__pyx_t_4) {
   22355             :         } else {
   22356           1 :           __pyx_t_2 = __pyx_t_4;
   22357           1 :           goto __pyx_L43_bool_binop_done;
   22358             :         }
   22359           0 :         __pyx_L44_next_and:;
   22360           0 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22361           0 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22362           0 :         __pyx_t_2 = __pyx_t_4;
   22363           1 :         __pyx_L43_bool_binop_done:;
   22364           1 :         if (__pyx_t_2) {
   22365           0 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_v_arg_as_memoryview, 0); 
   22366           0 :           __pyx_v_memslice = __pyx_t_12;
   22367           0 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22368           0 :           if (__pyx_t_2) {
   22369           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22370           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22371           0 :             goto __pyx_L39_try_break;
   22372             :           }
   22373             :           /*else*/ {
   22374           0 :             PyErr_Clear(); 
   22375             :           }
   22376             :         }
   22377           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22378           1 :         if (!__pyx_t_4) {
   22379           1 :           goto __pyx_L51_next_or;
   22380             :         } else {
   22381           0 :         }
   22382           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22383           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(__pyx_t_float_complex)));
   22384           0 :         if (!__pyx_t_4) {
   22385             :         } else {
   22386           0 :           goto __pyx_L50_next_and;
   22387             :         }
   22388           1 :         __pyx_L51_next_or:;
   22389           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(__pyx_t_float_complex)));
   22390           1 :         if (__pyx_t_4) {
   22391             :         } else {
   22392           0 :           __pyx_t_2 = __pyx_t_4;
   22393           0 :           goto __pyx_L49_bool_binop_done;
   22394             :         }
   22395           1 :         __pyx_L50_next_and:;
   22396           1 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22397           1 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22398           1 :         __pyx_t_2 = __pyx_t_4;
   22399           1 :         __pyx_L49_bool_binop_done:;
   22400           1 :         if (__pyx_t_2) {
   22401           1 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_float_complex(__pyx_v_arg_as_memoryview, 0); 
   22402           1 :           __pyx_v_memslice = __pyx_t_12;
   22403           1 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22404           1 :           if (__pyx_t_2) {
   22405           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22406           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_float_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22407           0 :             goto __pyx_L39_try_break;
   22408             :           }
   22409             :           /*else*/ {
   22410           1 :             PyErr_Clear(); 
   22411             :           }
   22412             :         }
   22413           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22414           1 :         if (!__pyx_t_4) {
   22415           1 :           goto __pyx_L57_next_or;
   22416             :         } else {
   22417           0 :         }
   22418           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22419           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(double)));
   22420           0 :         if (!__pyx_t_4) {
   22421             :         } else {
   22422           0 :           goto __pyx_L56_next_and;
   22423             :         }
   22424           1 :         __pyx_L57_next_or:;
   22425           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(double)));
   22426           1 :         if (__pyx_t_4) {
   22427             :         } else {
   22428           0 :           __pyx_t_2 = __pyx_t_4;
   22429           0 :           goto __pyx_L55_bool_binop_done;
   22430             :         }
   22431           1 :         __pyx_L56_next_and:;
   22432           1 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22433           1 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22434           1 :         __pyx_t_2 = __pyx_t_4;
   22435           1 :         __pyx_L55_bool_binop_done:;
   22436           1 :         if (__pyx_t_2) {
   22437           1 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(__pyx_v_arg_as_memoryview, 0); 
   22438           1 :           __pyx_v_memslice = __pyx_t_12;
   22439           1 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22440           1 :           if (__pyx_t_2) {
   22441           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22442           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22443           0 :             goto __pyx_L39_try_break;
   22444             :           }
   22445             :           /*else*/ {
   22446           1 :             PyErr_Clear(); 
   22447             :           }
   22448             :         }
   22449           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22450           1 :         if (!__pyx_t_4) {
   22451           1 :           goto __pyx_L63_next_or;
   22452             :         } else {
   22453           0 :         }
   22454           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22455           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(__pyx_t_double_complex)));
   22456           0 :         if (!__pyx_t_4) {
   22457             :         } else {
   22458           0 :           goto __pyx_L62_next_and;
   22459             :         }
   22460           1 :         __pyx_L63_next_or:;
   22461           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(__pyx_t_double_complex)));
   22462           1 :         if (__pyx_t_4) {
   22463             :         } else {
   22464           1 :           __pyx_t_2 = __pyx_t_4;
   22465           1 :           goto __pyx_L61_bool_binop_done;
   22466             :         }
   22467           0 :         __pyx_L62_next_and:;
   22468           0 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22469           0 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22470           0 :         __pyx_t_2 = __pyx_t_4;
   22471           1 :         __pyx_L61_bool_binop_done:;
   22472           1 :         if (__pyx_t_2) {
   22473           0 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_double_complex(__pyx_v_arg_as_memoryview, 0); 
   22474           0 :           __pyx_v_memslice = __pyx_t_12;
   22475           0 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22476           0 :           if (__pyx_t_2) {
   22477           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22478           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_double_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22479           0 :             goto __pyx_L39_try_break;
   22480             :           }
   22481             :           /*else*/ {
   22482           0 :             PyErr_Clear(); 
   22483             :           }
   22484             :         }
   22485           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22486           1 :         if (!__pyx_t_4) {
   22487           1 :           goto __pyx_L69_next_or;
   22488             :         } else {
   22489           0 :         }
   22490           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22491           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(long double)));
   22492           0 :         if (!__pyx_t_4) {
   22493             :         } else {
   22494           0 :           goto __pyx_L68_next_and;
   22495             :         }
   22496           1 :         __pyx_L69_next_or:;
   22497           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(long double)));
   22498           1 :         if (__pyx_t_4) {
   22499             :         } else {
   22500           1 :           __pyx_t_2 = __pyx_t_4;
   22501           1 :           goto __pyx_L67_bool_binop_done;
   22502             :         }
   22503           0 :         __pyx_L68_next_and:;
   22504           0 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22505           0 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22506           0 :         __pyx_t_2 = __pyx_t_4;
   22507           1 :         __pyx_L67_bool_binop_done:;
   22508           1 :         if (__pyx_t_2) {
   22509           0 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_long__double(__pyx_v_arg_as_memoryview, 0); 
   22510           0 :           __pyx_v_memslice = __pyx_t_12;
   22511           0 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22512           0 :           if (__pyx_t_2) {
   22513           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22514           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_long_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22515           0 :             goto __pyx_L39_try_break;
   22516             :           }
   22517             :           /*else*/ {
   22518           0 :             PyErr_Clear(); 
   22519             :           }
   22520             :         }
   22521           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22522           1 :         if (!__pyx_t_4) {
   22523           1 :           goto __pyx_L75_next_or;
   22524             :         } else {
   22525           0 :         }
   22526           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22527           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(__pyx_t_long_double_complex)));
   22528           0 :         if (!__pyx_t_4) {
   22529             :         } else {
   22530           0 :           goto __pyx_L74_next_and;
   22531             :         }
   22532           1 :         __pyx_L75_next_or:;
   22533           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(__pyx_t_long_double_complex)));
   22534           1 :         if (__pyx_t_4) {
   22535             :         } else {
   22536           1 :           __pyx_t_2 = __pyx_t_4;
   22537           1 :           goto __pyx_L73_bool_binop_done;
   22538             :         }
   22539           0 :         __pyx_L74_next_and:;
   22540           0 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22541           0 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22542           0 :         __pyx_t_2 = __pyx_t_4;
   22543           1 :         __pyx_L73_bool_binop_done:;
   22544           1 :         if (__pyx_t_2) {
   22545           0 :           __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_long_double_complex(__pyx_v_arg_as_memoryview, 0); 
   22546           0 :           __pyx_v_memslice = __pyx_t_12;
   22547           0 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22548           0 :           if (__pyx_t_2) {
   22549           0 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22550           0 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_kp_s_long_double_complex, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22551           0 :             goto __pyx_L39_try_break;
   22552             :           }
   22553             :           /*else*/ {
   22554           0 :             PyErr_Clear(); 
   22555             :           }
   22556             :         }
   22557           1 :         __pyx_t_4 = (__pyx_v_itemsize == -1L);
   22558           1 :         if (!__pyx_t_4) {
   22559           1 :           goto __pyx_L81_next_or;
   22560             :         } else {
   22561           0 :         }
   22562           0 :         __pyx_t_5 = __Pyx_PyMemoryView_Get_itemsize(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22563           0 :         __pyx_t_4 = (__pyx_t_5 == (sizeof(void *)));
   22564           0 :         if (!__pyx_t_4) {
   22565             :         } else {
   22566           0 :           goto __pyx_L80_next_and;
   22567             :         }
   22568           1 :         __pyx_L81_next_or:;
   22569           1 :         __pyx_t_4 = (__pyx_v_itemsize == (sizeof(void *)));
   22570           1 :         if (__pyx_t_4) {
   22571             :         } else {
   22572           0 :           __pyx_t_2 = __pyx_t_4;
   22573           0 :           goto __pyx_L79_bool_binop_done;
   22574             :         }
   22575           1 :         __pyx_L80_next_and:;
   22576           1 :         __pyx_t_11 = __Pyx_PyMemoryView_Get_ndim(__pyx_v_arg_as_memoryview); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22577           1 :         __pyx_t_4 = (__pyx_t_11 == 2);
   22578           1 :         __pyx_t_2 = __pyx_t_4;
   22579           1 :         __pyx_L79_bool_binop_done:;
   22580           1 :         if (__pyx_t_2) {
   22581           1 :           if ((CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION == 2)) {
   22582             :             __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(__pyx_v_arg, 0); 
   22583             :             __pyx_v_memslice = __pyx_t_12;
   22584             :             goto __pyx_L83;
   22585             :           }
   22586             :           /*else*/ {
   22587           1 :             __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(__pyx_v_arg_as_memoryview, 0); 
   22588           1 :             __pyx_v_memslice = __pyx_t_12;
   22589             :           }
   22590           1 :           __pyx_L83:;
   22591           1 :           __pyx_t_2 = (__pyx_v_memslice.memview != 0);
   22592           1 :           if (__pyx_t_2) {
   22593           1 :             __PYX_XCLEAR_MEMVIEW((&__pyx_v_memslice), 1); 
   22594           1 :             if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_object, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22595           1 :             goto __pyx_L39_try_break;
   22596             :           }
   22597             :           /*else*/ {
   22598           0 :             PyErr_Clear(); 
   22599             :           }
   22600             :         }
   22601             :       }
   22602           0 :       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
   22603           0 :       __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
   22604           0 :       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
   22605           0 :       goto __pyx_L41_try_end;
   22606           0 :       __pyx_L34_error:;
   22607           0 :       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   22608           0 :       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
   22609           0 :       __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_ValueError, __pyx_builtin_TypeError);
   22610           0 :       if (__pyx_t_11) {
   22611           0 :         __Pyx_AddTraceback("scipy.signal._sosfilt.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
   22612           0 :         if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_13) < 0) __PYX_ERR(0, 82, __pyx_L36_except_error)
   22613           0 :         __Pyx_XGOTREF(__pyx_t_6);
   22614           0 :         __Pyx_XGOTREF(__pyx_t_1);
   22615           0 :         __Pyx_XGOTREF(__pyx_t_13);
   22616           0 :         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
   22617           0 :         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   22618           0 :         __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
   22619           0 :         goto __pyx_L35_exception_handled;
   22620             :       }
   22621           0 :       goto __pyx_L36_except_error;
   22622           0 :       __pyx_L36_except_error:;
   22623           0 :       __Pyx_XGIVEREF(__pyx_t_8);
   22624           0 :       __Pyx_XGIVEREF(__pyx_t_9);
   22625           0 :       __Pyx_XGIVEREF(__pyx_t_10);
   22626           0 :       __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
   22627           0 :       goto __pyx_L1_error;
   22628           1 :       __pyx_L39_try_break:;
   22629           1 :       __Pyx_XGIVEREF(__pyx_t_8);
   22630           1 :       __Pyx_XGIVEREF(__pyx_t_9);
   22631           1 :       __Pyx_XGIVEREF(__pyx_t_10);
   22632           1 :       __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
   22633           1 :       goto __pyx_L10_break;
   22634           0 :       __pyx_L35_exception_handled:;
   22635           0 :       __Pyx_XGIVEREF(__pyx_t_8);
   22636           0 :       __Pyx_XGIVEREF(__pyx_t_9);
   22637           0 :       __Pyx_XGIVEREF(__pyx_t_10);
   22638           0 :       __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
   22639           0 :       __pyx_L41_try_end:;
   22640             :     }
   22641           0 :     if (unlikely((__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22642           0 :     goto __pyx_L10_break;
   22643             :   }
   22644         134 :   __pyx_L10_break:;
   22645         134 :   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__fused_sigindex); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22646         134 :   __pyx_t_4 = (!__pyx_t_2);
   22647         134 :   if (__pyx_t_4) {
   22648           1 :     __pyx_t_5 = 0;
   22649           1 :     if (unlikely(__pyx_v_signatures == Py_None)) {
   22650           0 :       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   22651           0 :       __PYX_ERR(0, 82, __pyx_L1_error)
   22652             :     }
   22653           2 :     __pyx_t_1 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_14), (&__pyx_t_11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22654           1 :     __Pyx_GOTREF(__pyx_t_1);
   22655           1 :     __Pyx_XDECREF(__pyx_t_13);
   22656           1 :     __pyx_t_13 = __pyx_t_1;
   22657           1 :     __pyx_t_1 = 0;
   22658           8 :     while (1) {
   22659           8 :       __pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_13, __pyx_t_14, &__pyx_t_5, &__pyx_t_1, NULL, NULL, __pyx_t_11);
   22660           8 :       if (unlikely(__pyx_t_15 == 0)) break;
   22661           7 :       if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22662           7 :       __Pyx_GOTREF(__pyx_t_1);
   22663           7 :       __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1);
   22664           7 :       __pyx_t_1 = 0;
   22665           7 :       __pyx_t_1 = __pyx_v__fused_sigindex;
   22666           7 :       __Pyx_INCREF(__pyx_t_1);
   22667           7 :       __Pyx_XDECREF_SET(__pyx_v_sigindex_node, ((PyObject*)__pyx_t_1));
   22668           7 :       __pyx_t_1 = 0;
   22669           7 :       __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22670           7 :       __Pyx_GOTREF(__pyx_t_16);
   22671           7 :       __pyx_t_17 = NULL;
   22672           7 :       __pyx_t_18 = 0;
   22673             :       #if CYTHON_UNPACK_METHODS
   22674           7 :       if (likely(PyMethod_Check(__pyx_t_16))) {
   22675           0 :         __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_16);
   22676           0 :         if (likely(__pyx_t_17)) {
   22677           0 :           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
   22678           0 :           __Pyx_INCREF(__pyx_t_17);
   22679           0 :           __Pyx_INCREF(function);
   22680           0 :           __Pyx_DECREF_SET(__pyx_t_16, function);
   22681             :           __pyx_t_18 = 1;
   22682             :         }
   22683             :       }
   22684             :       #endif
   22685             :       {
   22686           7 :         PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_kp_s__11};
   22687           7 :         __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_18, 1+__pyx_t_18);
   22688           7 :         __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
   22689           7 :         if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22690           7 :         __Pyx_GOTREF(__pyx_t_6);
   22691           7 :         __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   22692             :       }
   22693           7 :       __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_split); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22694           7 :       __Pyx_GOTREF(__pyx_t_16);
   22695           7 :       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22696           7 :       __pyx_t_6 = NULL;
   22697           7 :       __pyx_t_18 = 0;
   22698             :       #if CYTHON_UNPACK_METHODS
   22699           7 :       if (likely(PyMethod_Check(__pyx_t_16))) {
   22700           0 :         __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_16);
   22701           0 :         if (likely(__pyx_t_6)) {
   22702           0 :           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
   22703           0 :           __Pyx_INCREF(__pyx_t_6);
   22704           0 :           __Pyx_INCREF(function);
   22705           0 :           __Pyx_DECREF_SET(__pyx_t_16, function);
   22706             :           __pyx_t_18 = 1;
   22707             :         }
   22708             :       }
   22709             :       #endif
   22710             :       {
   22711           7 :         PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s__12};
   22712           7 :         __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_16, __pyx_callargs+1-__pyx_t_18, 1+__pyx_t_18);
   22713           7 :         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
   22714           7 :         if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22715           7 :         __Pyx_GOTREF(__pyx_t_1);
   22716           7 :         __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   22717             :       }
   22718          14 :       __pyx_t_16 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22719           7 :       __Pyx_GOTREF(__pyx_t_16);
   22720           7 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22721           7 :       __pyx_t_19 = PyList_GET_SIZE(__pyx_t_16);
   22722           7 :       if (unlikely(__pyx_t_19 < 1)) {
   22723           0 :         __Pyx_RaiseNeedMoreValuesError(0+__pyx_t_19); __PYX_ERR(0, 82, __pyx_L1_error)
   22724             :       }
   22725             :       #if CYTHON_COMPILING_IN_CPYTHON
   22726           7 :       __pyx_t_6 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_19-1); 
   22727           7 :       ((PyVarObject*)__pyx_t_16)->ob_size--;
   22728             :       #else
   22729             :       __pyx_t_6 = PySequence_ITEM(__pyx_t_16, __pyx_t_19-1); 
   22730             :       #endif
   22731           7 :       __Pyx_GOTREF(__pyx_t_6);
   22732             :       #if !CYTHON_COMPILING_IN_CPYTHON
   22733             :       __pyx_t_17 = PySequence_GetSlice(__pyx_t_16, 0, __pyx_t_19-1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 82, __pyx_L1_error)
   22734             :       __Pyx_GOTREF(__pyx_t_17);
   22735             :       __Pyx_DECREF(__pyx_t_16);
   22736             :       __pyx_t_16 = __pyx_t_17; __pyx_t_17 = NULL;
   22737             :       #else
   22738           7 :       CYTHON_UNUSED_VAR(__pyx_t_17);
   22739             :       #endif
   22740           7 :       __Pyx_XDECREF_SET(__pyx_v_sig_series, ((PyObject*)__pyx_t_16));
   22741           7 :       __pyx_t_16 = 0;
   22742           7 :       __Pyx_XDECREF_SET(__pyx_v_last_type, __pyx_t_6);
   22743           7 :       __pyx_t_6 = 0;
   22744           7 :       __pyx_t_1 = __pyx_v_sig_series; __Pyx_INCREF(__pyx_t_1);
   22745             :       __pyx_t_19 = 0;
   22746           7 :       for (;;) {
   22747             :         {
   22748           7 :           Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
   22749             :           #if !CYTHON_ASSUME_SAFE_MACROS
   22750             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22751             :           #endif
   22752           7 :           if (__pyx_t_19 >= __pyx_temp) break;
   22753             :         }
   22754             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22755           0 :         __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_19); __Pyx_INCREF(__pyx_t_6); __pyx_t_19++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22756             :         #else
   22757             :         __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22758             :         __Pyx_GOTREF(__pyx_t_6);
   22759             :         #endif
   22760           0 :         __Pyx_XDECREF_SET(__pyx_v_sig_type, __pyx_t_6);
   22761           0 :         __pyx_t_6 = 0;
   22762           0 :         if (unlikely(__pyx_v_sigindex_node == Py_None)) {
   22763           0 :           PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   22764           0 :           __PYX_ERR(0, 82, __pyx_L1_error)
   22765             :         }
   22766           0 :         __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_v_sig_type, __pyx_v_sigindex_node, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22767           0 :         if (__pyx_t_4) {
   22768           0 :           __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22769           0 :           __Pyx_GOTREF(__pyx_t_6);
   22770           0 :           if (unlikely(__pyx_v_sigindex_node == Py_None)) {
   22771             :             PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   22772             :             __PYX_ERR(0, 82, __pyx_L1_error)
   22773             :           }
   22774           0 :           if (unlikely((PyDict_SetItem(__pyx_v_sigindex_node, __pyx_v_sig_type, __pyx_t_6) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22775           0 :           __Pyx_INCREF(__pyx_t_6);
   22776           0 :           __Pyx_DECREF_SET(__pyx_v_sigindex_node, __pyx_t_6);
   22777           0 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22778           0 :           goto __pyx_L92;
   22779             :         }
   22780             :         /*else*/ {
   22781           0 :           if (unlikely(__pyx_v_sigindex_node == Py_None)) {
   22782             :             PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   22783             :             __PYX_ERR(0, 82, __pyx_L1_error)
   22784             :           }
   22785           0 :           __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_sigindex_node, __pyx_v_sig_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22786           0 :           __Pyx_GOTREF(__pyx_t_6);
   22787           0 :           __pyx_t_16 = __pyx_t_6;
   22788           0 :           __Pyx_INCREF(__pyx_t_16);
   22789           0 :           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   22790           7 :           __Pyx_DECREF_SET(__pyx_v_sigindex_node, ((PyObject*)__pyx_t_16));
   22791             :           __pyx_t_16 = 0;
   22792             :         }
   22793             :         __pyx_L92:;
   22794             :       }
   22795           7 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22796           7 :       if (unlikely(__pyx_v_sigindex_node == Py_None)) {
   22797           0 :         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   22798           0 :         __PYX_ERR(0, 82, __pyx_L1_error)
   22799             :       }
   22800           7 :       if (unlikely((PyDict_SetItem(__pyx_v_sigindex_node, __pyx_v_last_type, __pyx_v_sig) < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22801             :     }
   22802           2 :     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   22803             :   }
   22804         134 :   __pyx_t_13 = PyList_New(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error)
   22805         134 :   __Pyx_GOTREF(__pyx_t_13);
   22806         134 :   __pyx_v_sigindex_matches = ((PyObject*)__pyx_t_13);
   22807         134 :   __pyx_t_13 = 0;
   22808         134 :   __pyx_t_13 = PyList_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error)
   22809         134 :   __Pyx_GOTREF(__pyx_t_13);
   22810         134 :   __Pyx_INCREF(__pyx_v__fused_sigindex);
   22811         134 :   __Pyx_GIVEREF(__pyx_v__fused_sigindex);
   22812         134 :   if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_v__fused_sigindex)) __PYX_ERR(0, 82, __pyx_L1_error);
   22813         134 :   __pyx_v_sigindex_candidates = ((PyObject*)__pyx_t_13);
   22814         134 :   __pyx_t_13 = 0;
   22815         134 :   __pyx_t_13 = __pyx_v_dest_sig; __Pyx_INCREF(__pyx_t_13);
   22816             :   __pyx_t_14 = 0;
   22817         268 :   for (;;) {
   22818             :     {
   22819         268 :       Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_13);
   22820             :       #if !CYTHON_ASSUME_SAFE_MACROS
   22821             :       if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22822             :       #endif
   22823         268 :       if (__pyx_t_14 >= __pyx_temp) break;
   22824             :     }
   22825             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22826         134 :     __pyx_t_1 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22827             :     #else
   22828             :     __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_13, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22829             :     __Pyx_GOTREF(__pyx_t_1);
   22830             :     #endif
   22831         134 :     __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1);
   22832         134 :     __pyx_t_1 = 0;
   22833         134 :     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22834         134 :     __Pyx_GOTREF(__pyx_t_1);
   22835         134 :     __Pyx_XDECREF_SET(__pyx_v_found_matches, ((PyObject*)__pyx_t_1));
   22836         134 :     __pyx_t_1 = 0;
   22837         134 :     __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22838         134 :     __Pyx_GOTREF(__pyx_t_1);
   22839         134 :     __Pyx_XDECREF_SET(__pyx_v_found_candidates, ((PyObject*)__pyx_t_1));
   22840         134 :     __pyx_t_1 = 0;
   22841         134 :     __pyx_t_4 = (__pyx_v_dst_type == Py_None);
   22842         134 :     if (__pyx_t_4) {
   22843           0 :       __pyx_t_1 = __pyx_v_sigindex_matches; __Pyx_INCREF(__pyx_t_1);
   22844           0 :       __pyx_t_5 = 0;
   22845           0 :       for (;;) {
   22846             :         {
   22847           0 :           Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
   22848             :           #if !CYTHON_ASSUME_SAFE_MACROS
   22849             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22850             :           #endif
   22851           0 :           if (__pyx_t_5 >= __pyx_temp) break;
   22852             :         }
   22853             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22854           0 :         __pyx_t_16 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_16); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22855             :         #else
   22856             :         __pyx_t_16 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22857             :         __Pyx_GOTREF(__pyx_t_16);
   22858             :         #endif
   22859           0 :         __Pyx_XDECREF_SET(__pyx_v_sn, __pyx_t_16);
   22860           0 :         __pyx_t_16 = 0;
   22861           0 :         if (unlikely(__pyx_v_sn == Py_None)) {
   22862           0 :           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
   22863           0 :           __PYX_ERR(0, 82, __pyx_L1_error)
   22864             :         }
   22865           0 :         __pyx_t_16 = __Pyx_PyDict_Values(((PyObject*)__pyx_v_sn)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22866           0 :         __Pyx_GOTREF(__pyx_t_16);
   22867           0 :         __pyx_t_20 = __Pyx_PyList_Extend(__pyx_v_found_matches, __pyx_t_16); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22868           0 :         __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   22869             :       }
   22870           0 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22871           0 :       __pyx_t_1 = __pyx_v_sigindex_candidates; __Pyx_INCREF(__pyx_t_1);
   22872           0 :       __pyx_t_5 = 0;
   22873           0 :       for (;;) {
   22874             :         {
   22875           0 :           Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
   22876             :           #if !CYTHON_ASSUME_SAFE_MACROS
   22877             :           if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22878             :           #endif
   22879           0 :           if (__pyx_t_5 >= __pyx_temp) break;
   22880             :         }
   22881             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22882           0 :         __pyx_t_16 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_16); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22883             :         #else
   22884             :         __pyx_t_16 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22885             :         __Pyx_GOTREF(__pyx_t_16);
   22886             :         #endif
   22887           0 :         __Pyx_XDECREF_SET(__pyx_v_sn, __pyx_t_16);
   22888           0 :         __pyx_t_16 = 0;
   22889           0 :         if (unlikely(__pyx_v_sn == Py_None)) {
   22890           0 :           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
   22891           0 :           __PYX_ERR(0, 82, __pyx_L1_error)
   22892             :         }
   22893           0 :         __pyx_t_16 = __Pyx_PyDict_Values(((PyObject*)__pyx_v_sn)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   22894           0 :         __Pyx_GOTREF(__pyx_t_16);
   22895           0 :         __pyx_t_20 = __Pyx_PyList_Extend(__pyx_v_found_candidates, __pyx_t_16); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22896           0 :         __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   22897             :       }
   22898           0 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22899           0 :       goto __pyx_L96;
   22900             :     }
   22901             :     /*else*/ {
   22902         134 :       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22903         134 :       __Pyx_GOTREF(__pyx_t_1);
   22904         134 :       __Pyx_INCREF(__pyx_v_sigindex_matches);
   22905         134 :       __Pyx_GIVEREF(__pyx_v_sigindex_matches);
   22906         134 :       if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_sigindex_matches)) __PYX_ERR(0, 82, __pyx_L1_error);
   22907         134 :       __Pyx_INCREF(__pyx_v_sigindex_candidates);
   22908         134 :       __Pyx_GIVEREF(__pyx_v_sigindex_candidates);
   22909         134 :       if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sigindex_candidates)) __PYX_ERR(0, 82, __pyx_L1_error);
   22910         134 :       __pyx_t_16 = __pyx_t_1; __Pyx_INCREF(__pyx_t_16);
   22911         134 :       __pyx_t_5 = 0;
   22912         268 :       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22913         670 :       for (;;) {
   22914         402 :         if (__pyx_t_5 >= 2) break;
   22915             :         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22916         268 :         __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22917             :         #else
   22918             :         __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_16, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
   22919             :         __Pyx_GOTREF(__pyx_t_1);
   22920             :         #endif
   22921         268 :         __Pyx_XDECREF_SET(__pyx_v_search_list, ((PyObject*)__pyx_t_1));
   22922         268 :         __pyx_t_1 = 0;
   22923         268 :         if (unlikely(__pyx_v_search_list == Py_None)) {
   22924           0 :           PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   22925           0 :           __PYX_ERR(0, 82, __pyx_L1_error)
   22926             :         }
   22927         268 :         __pyx_t_1 = __pyx_v_search_list; __Pyx_INCREF(__pyx_t_1);
   22928             :         __pyx_t_19 = 0;
   22929         402 :         for (;;) {
   22930             :           {
   22931         402 :             Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
   22932             :             #if !CYTHON_ASSUME_SAFE_MACROS
   22933             :             if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22934             :             #endif
   22935         402 :             if (__pyx_t_19 >= __pyx_temp) break;
   22936             :           }
   22937             :           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   22938         134 :           __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_19); __Pyx_INCREF(__pyx_t_6); __pyx_t_19++; if (unlikely((0 < 0))) __PYX_ERR(0, 82, __pyx_L1_error)
   22939             :           #else
   22940             :           __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22941             :           __Pyx_GOTREF(__pyx_t_6);
   22942             :           #endif
   22943         134 :           __Pyx_XDECREF_SET(__pyx_v_sn, __pyx_t_6);
   22944         134 :           __pyx_t_6 = 0;
   22945         134 :           if (unlikely(__pyx_v_sn == Py_None)) {
   22946           0 :             PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
   22947           0 :             __PYX_ERR(0, 82, __pyx_L1_error)
   22948             :           }
   22949         134 :           __pyx_t_6 = __Pyx_PyDict_GetItemDefault(((PyObject*)__pyx_v_sn), __pyx_v_dst_type, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error)
   22950         134 :           __Pyx_GOTREF(__pyx_t_6);
   22951         134 :           __Pyx_XDECREF_SET(__pyx_v_type_match, __pyx_t_6);
   22952         134 :           __pyx_t_6 = 0;
   22953         134 :           __pyx_t_4 = (__pyx_v_type_match != Py_None);
   22954         134 :           if (__pyx_t_4) {
   22955         134 :             __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_found_matches, __pyx_v_type_match); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22956             :           }
   22957             :         }
   22958         536 :         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   22959             :       }
   22960         134 :       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   22961             :     }
   22962         134 :     __pyx_L96:;
   22963         134 :     __Pyx_INCREF(__pyx_v_found_matches);
   22964         134 :     __Pyx_DECREF_SET(__pyx_v_sigindex_matches, __pyx_v_found_matches);
   22965         134 :     __Pyx_INCREF(__pyx_v_found_candidates);
   22966         134 :     __Pyx_DECREF_SET(__pyx_v_sigindex_candidates, __pyx_v_found_candidates);
   22967         134 :     __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_found_matches) != 0);
   22968         134 :     if (!__pyx_t_2) {
   22969           0 :     } else {
   22970         134 :       __pyx_t_4 = __pyx_t_2;
   22971         134 :       goto __pyx_L111_bool_binop_done;
   22972             :     }
   22973           0 :     __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_found_candidates) != 0);
   22974           0 :     __pyx_t_4 = __pyx_t_2;
   22975         134 :     __pyx_L111_bool_binop_done:;
   22976         134 :     __pyx_t_2 = (!__pyx_t_4);
   22977         134 :     if (__pyx_t_2) {
   22978           0 :       goto __pyx_L95_break;
   22979             :     }
   22980             :   }
   22981         134 :   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   22982         134 :   goto __pyx_L113_for_end;
   22983           0 :   __pyx_L95_break:;
   22984           0 :   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   22985           0 :   goto __pyx_L113_for_end;
   22986         134 :   __pyx_L113_for_end:;
   22987         134 :   __Pyx_INCREF(__pyx_v_sigindex_matches);
   22988         134 :   __pyx_v_candidates = __pyx_v_sigindex_matches;
   22989         134 :   __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
   22990         134 :   __pyx_t_4 = (!__pyx_t_2);
   22991         134 :   if (unlikely(__pyx_t_4)) {
   22992           0 :     __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error)
   22993           0 :     __Pyx_GOTREF(__pyx_t_13);
   22994           0 :     __Pyx_Raise(__pyx_t_13, 0, 0, 0);
   22995           0 :     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   22996           0 :     __PYX_ERR(0, 82, __pyx_L1_error)
   22997             :   }
   22998         134 :   __pyx_t_14 = __Pyx_PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 82, __pyx_L1_error)
   22999         134 :   __pyx_t_4 = (__pyx_t_14 > 1);
   23000         134 :   if (unlikely(__pyx_t_4)) {
   23001           0 :     __pyx_t_13 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error)
   23002           0 :     __Pyx_GOTREF(__pyx_t_13);
   23003           0 :     __Pyx_Raise(__pyx_t_13, 0, 0, 0);
   23004           0 :     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   23005           0 :     __PYX_ERR(0, 82, __pyx_L1_error)
   23006             :   }
   23007             :   /*else*/ {
   23008         134 :     __Pyx_XDECREF(__pyx_r);
   23009         134 :     if (unlikely(__pyx_v_signatures == Py_None)) {
   23010           0 :       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
   23011           0 :       __PYX_ERR(0, 82, __pyx_L1_error)
   23012             :     }
   23013         134 :     __pyx_t_13 = __Pyx_GetItemInt_List(__pyx_v_candidates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 82, __pyx_L1_error)
   23014         134 :     __Pyx_GOTREF(__pyx_t_13);
   23015         134 :     __pyx_t_16 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), __pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 82, __pyx_L1_error)
   23016         134 :     __Pyx_GOTREF(__pyx_t_16);
   23017         134 :     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   23018         134 :     __pyx_r = __pyx_t_16;
   23019         134 :     __pyx_t_16 = 0;
   23020         134 :     goto __pyx_L0;
   23021             :   }
   23022             : 
   23023             :   /* function exit code */
   23024           0 :   __pyx_L1_error:;
   23025           0 :   __Pyx_XDECREF(__pyx_t_1);
   23026           0 :   __Pyx_XDECREF(__pyx_t_6);
   23027           0 :   __Pyx_XDECREF(__pyx_t_13);
   23028           0 :   __Pyx_XDECREF(__pyx_t_16);
   23029           0 :   __Pyx_XDECREF(__pyx_t_17);
   23030           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23031           0 :   __pyx_r = NULL;
   23032         134 :   __pyx_L0:;
   23033         134 :   __Pyx_XDECREF(__pyx_v_search_list);
   23034         134 :   __Pyx_XDECREF(__pyx_v_sigindex_node);
   23035         134 :   __Pyx_XDECREF(__pyx_v_dest_sig);
   23036         134 :   __Pyx_XDECREF((PyObject *)__pyx_v_ndarray);
   23037         134 :   __Pyx_XDECREF(__pyx_v_arg_as_memoryview);
   23038         134 :   __Pyx_XDECREF(__pyx_v_arg);
   23039         134 :   __Pyx_XDECREF(__pyx_v_dtype);
   23040         134 :   __Pyx_XDECREF(__pyx_v_arg_base);
   23041         134 :   __Pyx_XDECREF(__pyx_v_sig);
   23042         134 :   __Pyx_XDECREF(__pyx_v_sig_series);
   23043         134 :   __Pyx_XDECREF(__pyx_v_last_type);
   23044         134 :   __Pyx_XDECREF(__pyx_v_sig_type);
   23045         134 :   __Pyx_XDECREF(__pyx_v_sigindex_matches);
   23046         134 :   __Pyx_XDECREF(__pyx_v_sigindex_candidates);
   23047         134 :   __Pyx_XDECREF(__pyx_v_dst_type);
   23048         134 :   __Pyx_XDECREF(__pyx_v_found_matches);
   23049         134 :   __Pyx_XDECREF(__pyx_v_found_candidates);
   23050         134 :   __Pyx_XDECREF(__pyx_v_sn);
   23051         134 :   __Pyx_XDECREF(__pyx_v_type_match);
   23052         134 :   __Pyx_XDECREF(__pyx_v_candidates);
   23053         134 :   __Pyx_XDECREF(__pyx_v_kwargs);
   23054         134 :   __Pyx_XGIVEREF(__pyx_r);
   23055         134 :   __Pyx_RefNannyFinishContext();
   23056         134 :   return __pyx_r;
   23057             : }
   23058             : 
   23059             : /* Python wrapper */
   23060             : static PyObject *__pyx_fuse_0__pyx_pw_5scipy_6signal_8_sosfilt_5_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23061             : static PyMethodDef __pyx_fuse_0__pyx_mdef_5scipy_6signal_8_sosfilt_5_sosfilt = {"__pyx_fuse_0_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_5scipy_6signal_8_sosfilt_5_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23062          16 : static PyObject *__pyx_fuse_0__pyx_pw_5scipy_6signal_8_sosfilt_5_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23063          16 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23064          16 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23065          16 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23066          16 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23067          16 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23068          16 :   PyObject* values[3] = {0,0,0};
   23069          16 :   int __pyx_lineno = 0;
   23070          16 :   const char *__pyx_filename = NULL;
   23071          16 :   int __pyx_clineno = 0;
   23072          16 :   PyObject *__pyx_r = 0;
   23073             :   __Pyx_RefNannyDeclarations
   23074          16 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23075             :   #if CYTHON_ASSUME_SAFE_MACROS
   23076          16 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23077             :   #else
   23078             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23079             :   #endif
   23080          16 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23081             :   {
   23082          16 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23083          16 :     if (__pyx_kwds) {
   23084           0 :       Py_ssize_t kw_args;
   23085           0 :       switch (__pyx_nargs) {
   23086           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23087           0 :         CYTHON_FALLTHROUGH;
   23088           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23089           0 :         CYTHON_FALLTHROUGH;
   23090           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23091           0 :         CYTHON_FALLTHROUGH;
   23092           0 :         case  0: break;
   23093           0 :         default: goto __pyx_L5_argtuple_error;
   23094             :       }
   23095           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23096           0 :       switch (__pyx_nargs) {
   23097           0 :         case  0:
   23098           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23099           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23100           0 :           kw_args--;
   23101             :         }
   23102           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23103           0 :         else goto __pyx_L5_argtuple_error;
   23104           0 :         CYTHON_FALLTHROUGH;
   23105             :         case  1:
   23106           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23107           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23108           0 :           kw_args--;
   23109             :         }
   23110           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23111             :         else {
   23112           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23113             :         }
   23114           0 :         CYTHON_FALLTHROUGH;
   23115             :         case  2:
   23116           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   23117           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   23118           0 :           kw_args--;
   23119             :         }
   23120           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23121             :         else {
   23122           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   23123             :         }
   23124             :       }
   23125           0 :       if (unlikely(kw_args > 0)) {
   23126           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   23127           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   23128             :       }
   23129          16 :     } else if (unlikely(__pyx_nargs != 3)) {
   23130           0 :       goto __pyx_L5_argtuple_error;
   23131             :     } else {
   23132          16 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23133          16 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23134          16 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23135             :     }
   23136          16 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   23137          16 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   23138          16 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   23139             :   }
   23140          16 :   goto __pyx_L6_skip;
   23141           0 :   __pyx_L5_argtuple_error:;
   23142           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   23143          16 :   __pyx_L6_skip:;
   23144          16 :   goto __pyx_L4_argument_unpacking_done;
   23145           0 :   __pyx_L3_error:;
   23146             :   {
   23147           0 :     Py_ssize_t __pyx_temp;
   23148           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23149             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23150             :     }
   23151             :   }
   23152           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23153           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23154           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23155           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23156           0 :   __Pyx_RefNannyFinishContext();
   23157           0 :   return NULL;
   23158          16 :   __pyx_L4_argument_unpacking_done:;
   23159          16 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_4_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23160             : 
   23161             :   /* function exit code */
   23162          16 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23163          16 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23164          16 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23165             :   {
   23166          16 :     Py_ssize_t __pyx_temp;
   23167          16 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23168             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23169             :     }
   23170             :   }
   23171             :   __Pyx_RefNannyFinishContext();
   23172             :   return __pyx_r;
   23173             : }
   23174             : 
   23175          16 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_4_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   23176          16 :   PyObject *__pyx_r = NULL;
   23177             :   __Pyx_RefNannyDeclarations
   23178          16 :   __Pyx_RefNannySetupContext("__pyx_fuse_0_sosfilt", 1);
   23179             : 
   23180             :   /* "scipy/signal/_sosfilt.pyx":88
   23181             :  *         _sosfilt_object(sos, x, zi)
   23182             :  *     else:
   23183             :  *         with nogil:             # <<<<<<<<<<<<<<
   23184             :  *             _sosfilt_float(sos, x, zi)
   23185             :  */
   23186             :   {
   23187             :       #ifdef WITH_THREAD
   23188          16 :       PyThreadState *_save;
   23189          16 :       _save = NULL;
   23190          16 :       Py_UNBLOCK_THREADS
   23191          16 :       __Pyx_FastGIL_Remember();
   23192             :       #endif
   23193             :       /*try:*/ {
   23194             : 
   23195             :         /* "scipy/signal/_sosfilt.pyx":89
   23196             :  *     else:
   23197             :  *         with nogil:
   23198             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   23199             :  */
   23200          16 :         __pyx_fuse_0__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23201             :       }
   23202             : 
   23203             :       /* "scipy/signal/_sosfilt.pyx":88
   23204             :  *         _sosfilt_object(sos, x, zi)
   23205             :  *     else:
   23206             :  *         with nogil:             # <<<<<<<<<<<<<<
   23207             :  *             _sosfilt_float(sos, x, zi)
   23208             :  */
   23209             :       /*finally:*/ {
   23210             :         /*normal exit:*/{
   23211             :           #ifdef WITH_THREAD
   23212          16 :           __Pyx_FastGIL_Forget();
   23213          16 :           Py_BLOCK_THREADS
   23214             :           #endif
   23215          16 :           goto __pyx_L5;
   23216             :         }
   23217          16 :         __pyx_L5:;
   23218             :       }
   23219             :   }
   23220             : 
   23221             :   /* "scipy/signal/_sosfilt.pyx":82
   23222             :  * 
   23223             :  * 
   23224             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   23225             :  *              DTYPE_t [:, ::1] x,
   23226             :  *              DTYPE_t [:, :, ::1] zi):
   23227             :  */
   23228             : 
   23229             :   /* function exit code */
   23230          16 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   23231          16 :   __Pyx_XGIVEREF(__pyx_r);
   23232          16 :   __Pyx_RefNannyFinishContext();
   23233          16 :   return __pyx_r;
   23234             : }
   23235             : 
   23236             : /* Python wrapper */
   23237             : static PyObject *__pyx_fuse_1__pyx_pw_5scipy_6signal_8_sosfilt_7_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23238             : static PyMethodDef __pyx_fuse_1__pyx_mdef_5scipy_6signal_8_sosfilt_7_sosfilt = {"__pyx_fuse_1_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_5scipy_6signal_8_sosfilt_7_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23239           0 : static PyObject *__pyx_fuse_1__pyx_pw_5scipy_6signal_8_sosfilt_7_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23240           0 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23241           0 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23242           0 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23243           0 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23244           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23245           0 :   PyObject* values[3] = {0,0,0};
   23246           0 :   int __pyx_lineno = 0;
   23247           0 :   const char *__pyx_filename = NULL;
   23248           0 :   int __pyx_clineno = 0;
   23249           0 :   PyObject *__pyx_r = 0;
   23250             :   __Pyx_RefNannyDeclarations
   23251           0 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23252             :   #if CYTHON_ASSUME_SAFE_MACROS
   23253           0 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23254             :   #else
   23255             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23256             :   #endif
   23257           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23258             :   {
   23259           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23260           0 :     if (__pyx_kwds) {
   23261           0 :       Py_ssize_t kw_args;
   23262           0 :       switch (__pyx_nargs) {
   23263           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23264           0 :         CYTHON_FALLTHROUGH;
   23265           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23266           0 :         CYTHON_FALLTHROUGH;
   23267           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23268           0 :         CYTHON_FALLTHROUGH;
   23269           0 :         case  0: break;
   23270           0 :         default: goto __pyx_L5_argtuple_error;
   23271             :       }
   23272           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23273           0 :       switch (__pyx_nargs) {
   23274           0 :         case  0:
   23275           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23276           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23277           0 :           kw_args--;
   23278             :         }
   23279           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23280           0 :         else goto __pyx_L5_argtuple_error;
   23281           0 :         CYTHON_FALLTHROUGH;
   23282             :         case  1:
   23283           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23284           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23285           0 :           kw_args--;
   23286             :         }
   23287           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23288             :         else {
   23289           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23290             :         }
   23291           0 :         CYTHON_FALLTHROUGH;
   23292             :         case  2:
   23293           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   23294           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   23295           0 :           kw_args--;
   23296             :         }
   23297           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23298             :         else {
   23299           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   23300             :         }
   23301             :       }
   23302           0 :       if (unlikely(kw_args > 0)) {
   23303           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   23304           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   23305             :       }
   23306           0 :     } else if (unlikely(__pyx_nargs != 3)) {
   23307           0 :       goto __pyx_L5_argtuple_error;
   23308             :     } else {
   23309           0 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23310           0 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23311           0 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23312             :     }
   23313           0 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_float_complex(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   23314           0 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_float_complex(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   23315           0 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_float_complex(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   23316             :   }
   23317           0 :   goto __pyx_L6_skip;
   23318           0 :   __pyx_L5_argtuple_error:;
   23319           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   23320           0 :   __pyx_L6_skip:;
   23321           0 :   goto __pyx_L4_argument_unpacking_done;
   23322           0 :   __pyx_L3_error:;
   23323             :   {
   23324           0 :     Py_ssize_t __pyx_temp;
   23325           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23326             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23327             :     }
   23328             :   }
   23329           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23330           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23331           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23332           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23333           0 :   __Pyx_RefNannyFinishContext();
   23334           0 :   return NULL;
   23335           0 :   __pyx_L4_argument_unpacking_done:;
   23336           0 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_6_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23337             : 
   23338             :   /* function exit code */
   23339           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23340           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23341           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23342             :   {
   23343           0 :     Py_ssize_t __pyx_temp;
   23344           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23345             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23346             :     }
   23347             :   }
   23348             :   __Pyx_RefNannyFinishContext();
   23349             :   return __pyx_r;
   23350             : }
   23351             : 
   23352           0 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_6_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   23353           0 :   PyObject *__pyx_r = NULL;
   23354             :   __Pyx_RefNannyDeclarations
   23355           0 :   __Pyx_RefNannySetupContext("__pyx_fuse_1_sosfilt", 1);
   23356             : 
   23357             :   /* "scipy/signal/_sosfilt.pyx":88
   23358             :  *         _sosfilt_object(sos, x, zi)
   23359             :  *     else:
   23360             :  *         with nogil:             # <<<<<<<<<<<<<<
   23361             :  *             _sosfilt_float(sos, x, zi)
   23362             :  */
   23363             :   {
   23364             :       #ifdef WITH_THREAD
   23365           0 :       PyThreadState *_save;
   23366           0 :       _save = NULL;
   23367           0 :       Py_UNBLOCK_THREADS
   23368           0 :       __Pyx_FastGIL_Remember();
   23369             :       #endif
   23370             :       /*try:*/ {
   23371             : 
   23372             :         /* "scipy/signal/_sosfilt.pyx":89
   23373             :  *     else:
   23374             :  *         with nogil:
   23375             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   23376             :  */
   23377           0 :         __pyx_fuse_1__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23378             :       }
   23379             : 
   23380             :       /* "scipy/signal/_sosfilt.pyx":88
   23381             :  *         _sosfilt_object(sos, x, zi)
   23382             :  *     else:
   23383             :  *         with nogil:             # <<<<<<<<<<<<<<
   23384             :  *             _sosfilt_float(sos, x, zi)
   23385             :  */
   23386             :       /*finally:*/ {
   23387             :         /*normal exit:*/{
   23388             :           #ifdef WITH_THREAD
   23389           0 :           __Pyx_FastGIL_Forget();
   23390           0 :           Py_BLOCK_THREADS
   23391             :           #endif
   23392           0 :           goto __pyx_L5;
   23393             :         }
   23394           0 :         __pyx_L5:;
   23395             :       }
   23396             :   }
   23397             : 
   23398             :   /* "scipy/signal/_sosfilt.pyx":82
   23399             :  * 
   23400             :  * 
   23401             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   23402             :  *              DTYPE_t [:, ::1] x,
   23403             :  *              DTYPE_t [:, :, ::1] zi):
   23404             :  */
   23405             : 
   23406             :   /* function exit code */
   23407           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   23408           0 :   __Pyx_XGIVEREF(__pyx_r);
   23409           0 :   __Pyx_RefNannyFinishContext();
   23410           0 :   return __pyx_r;
   23411             : }
   23412             : 
   23413             : /* Python wrapper */
   23414             : static PyObject *__pyx_fuse_2__pyx_pw_5scipy_6signal_8_sosfilt_9_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23415             : static PyMethodDef __pyx_fuse_2__pyx_mdef_5scipy_6signal_8_sosfilt_9_sosfilt = {"__pyx_fuse_2_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_5scipy_6signal_8_sosfilt_9_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23416          89 : static PyObject *__pyx_fuse_2__pyx_pw_5scipy_6signal_8_sosfilt_9_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23417          89 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23418          89 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23419          89 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23420          89 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23421          89 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23422          89 :   PyObject* values[3] = {0,0,0};
   23423          89 :   int __pyx_lineno = 0;
   23424          89 :   const char *__pyx_filename = NULL;
   23425          89 :   int __pyx_clineno = 0;
   23426          89 :   PyObject *__pyx_r = 0;
   23427             :   __Pyx_RefNannyDeclarations
   23428          89 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23429             :   #if CYTHON_ASSUME_SAFE_MACROS
   23430          89 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23431             :   #else
   23432             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23433             :   #endif
   23434          89 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23435             :   {
   23436          89 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23437          89 :     if (__pyx_kwds) {
   23438           0 :       Py_ssize_t kw_args;
   23439           0 :       switch (__pyx_nargs) {
   23440           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23441           0 :         CYTHON_FALLTHROUGH;
   23442           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23443           0 :         CYTHON_FALLTHROUGH;
   23444           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23445           0 :         CYTHON_FALLTHROUGH;
   23446           0 :         case  0: break;
   23447           0 :         default: goto __pyx_L5_argtuple_error;
   23448             :       }
   23449           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23450           0 :       switch (__pyx_nargs) {
   23451           0 :         case  0:
   23452           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23453           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23454           0 :           kw_args--;
   23455             :         }
   23456           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23457           0 :         else goto __pyx_L5_argtuple_error;
   23458           0 :         CYTHON_FALLTHROUGH;
   23459             :         case  1:
   23460           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23461           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23462           0 :           kw_args--;
   23463             :         }
   23464           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23465             :         else {
   23466           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23467             :         }
   23468           0 :         CYTHON_FALLTHROUGH;
   23469             :         case  2:
   23470           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   23471           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   23472           0 :           kw_args--;
   23473             :         }
   23474           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23475             :         else {
   23476           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   23477             :         }
   23478             :       }
   23479           0 :       if (unlikely(kw_args > 0)) {
   23480           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   23481           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   23482             :       }
   23483          89 :     } else if (unlikely(__pyx_nargs != 3)) {
   23484           0 :       goto __pyx_L5_argtuple_error;
   23485             :     } else {
   23486          89 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23487          89 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23488          89 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23489             :     }
   23490          89 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   23491          89 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   23492          89 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_double(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   23493             :   }
   23494          89 :   goto __pyx_L6_skip;
   23495           0 :   __pyx_L5_argtuple_error:;
   23496           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   23497          89 :   __pyx_L6_skip:;
   23498          89 :   goto __pyx_L4_argument_unpacking_done;
   23499           0 :   __pyx_L3_error:;
   23500             :   {
   23501           0 :     Py_ssize_t __pyx_temp;
   23502           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23503             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23504             :     }
   23505             :   }
   23506           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23507           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23508           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23509           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23510           0 :   __Pyx_RefNannyFinishContext();
   23511           0 :   return NULL;
   23512          89 :   __pyx_L4_argument_unpacking_done:;
   23513          89 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_8_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23514             : 
   23515             :   /* function exit code */
   23516          89 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23517          89 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23518          89 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23519             :   {
   23520          89 :     Py_ssize_t __pyx_temp;
   23521          89 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23522             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23523             :     }
   23524             :   }
   23525             :   __Pyx_RefNannyFinishContext();
   23526             :   return __pyx_r;
   23527             : }
   23528             : 
   23529          89 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_8_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   23530          89 :   PyObject *__pyx_r = NULL;
   23531             :   __Pyx_RefNannyDeclarations
   23532          89 :   __Pyx_RefNannySetupContext("__pyx_fuse_2_sosfilt", 1);
   23533             : 
   23534             :   /* "scipy/signal/_sosfilt.pyx":88
   23535             :  *         _sosfilt_object(sos, x, zi)
   23536             :  *     else:
   23537             :  *         with nogil:             # <<<<<<<<<<<<<<
   23538             :  *             _sosfilt_float(sos, x, zi)
   23539             :  */
   23540             :   {
   23541             :       #ifdef WITH_THREAD
   23542          89 :       PyThreadState *_save;
   23543          89 :       _save = NULL;
   23544          89 :       Py_UNBLOCK_THREADS
   23545          89 :       __Pyx_FastGIL_Remember();
   23546             :       #endif
   23547             :       /*try:*/ {
   23548             : 
   23549             :         /* "scipy/signal/_sosfilt.pyx":89
   23550             :  *     else:
   23551             :  *         with nogil:
   23552             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   23553             :  */
   23554          89 :         __pyx_fuse_2__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23555             :       }
   23556             : 
   23557             :       /* "scipy/signal/_sosfilt.pyx":88
   23558             :  *         _sosfilt_object(sos, x, zi)
   23559             :  *     else:
   23560             :  *         with nogil:             # <<<<<<<<<<<<<<
   23561             :  *             _sosfilt_float(sos, x, zi)
   23562             :  */
   23563             :       /*finally:*/ {
   23564             :         /*normal exit:*/{
   23565             :           #ifdef WITH_THREAD
   23566          89 :           __Pyx_FastGIL_Forget();
   23567          89 :           Py_BLOCK_THREADS
   23568             :           #endif
   23569          89 :           goto __pyx_L5;
   23570             :         }
   23571          89 :         __pyx_L5:;
   23572             :       }
   23573             :   }
   23574             : 
   23575             :   /* "scipy/signal/_sosfilt.pyx":82
   23576             :  * 
   23577             :  * 
   23578             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   23579             :  *              DTYPE_t [:, ::1] x,
   23580             :  *              DTYPE_t [:, :, ::1] zi):
   23581             :  */
   23582             : 
   23583             :   /* function exit code */
   23584          89 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   23585          89 :   __Pyx_XGIVEREF(__pyx_r);
   23586          89 :   __Pyx_RefNannyFinishContext();
   23587          89 :   return __pyx_r;
   23588             : }
   23589             : 
   23590             : /* Python wrapper */
   23591             : static PyObject *__pyx_fuse_3__pyx_pw_5scipy_6signal_8_sosfilt_11_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23592             : static PyMethodDef __pyx_fuse_3__pyx_mdef_5scipy_6signal_8_sosfilt_11_sosfilt = {"__pyx_fuse_3_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3__pyx_pw_5scipy_6signal_8_sosfilt_11_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23593          28 : static PyObject *__pyx_fuse_3__pyx_pw_5scipy_6signal_8_sosfilt_11_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23594          28 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23595          28 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23596          28 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23597          28 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23598          28 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23599          28 :   PyObject* values[3] = {0,0,0};
   23600          28 :   int __pyx_lineno = 0;
   23601          28 :   const char *__pyx_filename = NULL;
   23602          28 :   int __pyx_clineno = 0;
   23603          28 :   PyObject *__pyx_r = 0;
   23604             :   __Pyx_RefNannyDeclarations
   23605          28 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23606             :   #if CYTHON_ASSUME_SAFE_MACROS
   23607          28 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23608             :   #else
   23609             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23610             :   #endif
   23611          28 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23612             :   {
   23613          28 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23614          28 :     if (__pyx_kwds) {
   23615           0 :       Py_ssize_t kw_args;
   23616           0 :       switch (__pyx_nargs) {
   23617           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23618           0 :         CYTHON_FALLTHROUGH;
   23619           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23620           0 :         CYTHON_FALLTHROUGH;
   23621           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23622           0 :         CYTHON_FALLTHROUGH;
   23623           0 :         case  0: break;
   23624           0 :         default: goto __pyx_L5_argtuple_error;
   23625             :       }
   23626           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23627           0 :       switch (__pyx_nargs) {
   23628           0 :         case  0:
   23629           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23630           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23631           0 :           kw_args--;
   23632             :         }
   23633           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23634           0 :         else goto __pyx_L5_argtuple_error;
   23635           0 :         CYTHON_FALLTHROUGH;
   23636             :         case  1:
   23637           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23638           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23639           0 :           kw_args--;
   23640             :         }
   23641           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23642             :         else {
   23643           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23644             :         }
   23645           0 :         CYTHON_FALLTHROUGH;
   23646             :         case  2:
   23647           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   23648           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   23649           0 :           kw_args--;
   23650             :         }
   23651           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23652             :         else {
   23653           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   23654             :         }
   23655             :       }
   23656           0 :       if (unlikely(kw_args > 0)) {
   23657           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   23658           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   23659             :       }
   23660          28 :     } else if (unlikely(__pyx_nargs != 3)) {
   23661           0 :       goto __pyx_L5_argtuple_error;
   23662             :     } else {
   23663          28 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23664          28 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23665          28 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23666             :     }
   23667          28 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_double_complex(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   23668          28 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_double_complex(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   23669          28 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_double_complex(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   23670             :   }
   23671          28 :   goto __pyx_L6_skip;
   23672           0 :   __pyx_L5_argtuple_error:;
   23673           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   23674          28 :   __pyx_L6_skip:;
   23675          28 :   goto __pyx_L4_argument_unpacking_done;
   23676           0 :   __pyx_L3_error:;
   23677             :   {
   23678           0 :     Py_ssize_t __pyx_temp;
   23679           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23680             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23681             :     }
   23682             :   }
   23683           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23684           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23685           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23686           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23687           0 :   __Pyx_RefNannyFinishContext();
   23688           0 :   return NULL;
   23689          28 :   __pyx_L4_argument_unpacking_done:;
   23690          28 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_10_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23691             : 
   23692             :   /* function exit code */
   23693          28 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23694          28 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23695          28 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23696             :   {
   23697          28 :     Py_ssize_t __pyx_temp;
   23698          28 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23699             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23700             :     }
   23701             :   }
   23702             :   __Pyx_RefNannyFinishContext();
   23703             :   return __pyx_r;
   23704             : }
   23705             : 
   23706          28 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_10_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   23707          28 :   PyObject *__pyx_r = NULL;
   23708             :   __Pyx_RefNannyDeclarations
   23709          28 :   __Pyx_RefNannySetupContext("__pyx_fuse_3_sosfilt", 1);
   23710             : 
   23711             :   /* "scipy/signal/_sosfilt.pyx":88
   23712             :  *         _sosfilt_object(sos, x, zi)
   23713             :  *     else:
   23714             :  *         with nogil:             # <<<<<<<<<<<<<<
   23715             :  *             _sosfilt_float(sos, x, zi)
   23716             :  */
   23717             :   {
   23718             :       #ifdef WITH_THREAD
   23719          28 :       PyThreadState *_save;
   23720          28 :       _save = NULL;
   23721          28 :       Py_UNBLOCK_THREADS
   23722          28 :       __Pyx_FastGIL_Remember();
   23723             :       #endif
   23724             :       /*try:*/ {
   23725             : 
   23726             :         /* "scipy/signal/_sosfilt.pyx":89
   23727             :  *     else:
   23728             :  *         with nogil:
   23729             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   23730             :  */
   23731          28 :         __pyx_fuse_3__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23732             :       }
   23733             : 
   23734             :       /* "scipy/signal/_sosfilt.pyx":88
   23735             :  *         _sosfilt_object(sos, x, zi)
   23736             :  *     else:
   23737             :  *         with nogil:             # <<<<<<<<<<<<<<
   23738             :  *             _sosfilt_float(sos, x, zi)
   23739             :  */
   23740             :       /*finally:*/ {
   23741             :         /*normal exit:*/{
   23742             :           #ifdef WITH_THREAD
   23743          28 :           __Pyx_FastGIL_Forget();
   23744          28 :           Py_BLOCK_THREADS
   23745             :           #endif
   23746          28 :           goto __pyx_L5;
   23747             :         }
   23748          28 :         __pyx_L5:;
   23749             :       }
   23750             :   }
   23751             : 
   23752             :   /* "scipy/signal/_sosfilt.pyx":82
   23753             :  * 
   23754             :  * 
   23755             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   23756             :  *              DTYPE_t [:, ::1] x,
   23757             :  *              DTYPE_t [:, :, ::1] zi):
   23758             :  */
   23759             : 
   23760             :   /* function exit code */
   23761          28 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   23762          28 :   __Pyx_XGIVEREF(__pyx_r);
   23763          28 :   __Pyx_RefNannyFinishContext();
   23764          28 :   return __pyx_r;
   23765             : }
   23766             : 
   23767             : /* Python wrapper */
   23768             : static PyObject *__pyx_fuse_4__pyx_pw_5scipy_6signal_8_sosfilt_13_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23769             : static PyMethodDef __pyx_fuse_4__pyx_mdef_5scipy_6signal_8_sosfilt_13_sosfilt = {"__pyx_fuse_4_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_4__pyx_pw_5scipy_6signal_8_sosfilt_13_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23770           0 : static PyObject *__pyx_fuse_4__pyx_pw_5scipy_6signal_8_sosfilt_13_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23771           0 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23772           0 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23773           0 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23774           0 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23775           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23776           0 :   PyObject* values[3] = {0,0,0};
   23777           0 :   int __pyx_lineno = 0;
   23778           0 :   const char *__pyx_filename = NULL;
   23779           0 :   int __pyx_clineno = 0;
   23780           0 :   PyObject *__pyx_r = 0;
   23781             :   __Pyx_RefNannyDeclarations
   23782           0 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23783             :   #if CYTHON_ASSUME_SAFE_MACROS
   23784           0 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23785             :   #else
   23786             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23787             :   #endif
   23788           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23789             :   {
   23790           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23791           0 :     if (__pyx_kwds) {
   23792           0 :       Py_ssize_t kw_args;
   23793           0 :       switch (__pyx_nargs) {
   23794           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23795           0 :         CYTHON_FALLTHROUGH;
   23796           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23797           0 :         CYTHON_FALLTHROUGH;
   23798           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23799           0 :         CYTHON_FALLTHROUGH;
   23800           0 :         case  0: break;
   23801           0 :         default: goto __pyx_L5_argtuple_error;
   23802             :       }
   23803           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23804           0 :       switch (__pyx_nargs) {
   23805           0 :         case  0:
   23806           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23807           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23808           0 :           kw_args--;
   23809             :         }
   23810           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23811           0 :         else goto __pyx_L5_argtuple_error;
   23812           0 :         CYTHON_FALLTHROUGH;
   23813             :         case  1:
   23814           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23815           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23816           0 :           kw_args--;
   23817             :         }
   23818           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23819             :         else {
   23820           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23821             :         }
   23822           0 :         CYTHON_FALLTHROUGH;
   23823             :         case  2:
   23824           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   23825           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   23826           0 :           kw_args--;
   23827             :         }
   23828           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23829             :         else {
   23830           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   23831             :         }
   23832             :       }
   23833           0 :       if (unlikely(kw_args > 0)) {
   23834           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   23835           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   23836             :       }
   23837           0 :     } else if (unlikely(__pyx_nargs != 3)) {
   23838           0 :       goto __pyx_L5_argtuple_error;
   23839             :     } else {
   23840           0 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23841           0 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23842           0 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23843             :     }
   23844           0 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc_long__double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   23845           0 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc_long__double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   23846           0 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_long__double(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   23847             :   }
   23848           0 :   goto __pyx_L6_skip;
   23849           0 :   __pyx_L5_argtuple_error:;
   23850           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   23851           0 :   __pyx_L6_skip:;
   23852           0 :   goto __pyx_L4_argument_unpacking_done;
   23853           0 :   __pyx_L3_error:;
   23854             :   {
   23855           0 :     Py_ssize_t __pyx_temp;
   23856           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23857             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23858             :     }
   23859             :   }
   23860           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23861           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23862           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23863           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   23864           0 :   __Pyx_RefNannyFinishContext();
   23865           0 :   return NULL;
   23866           0 :   __pyx_L4_argument_unpacking_done:;
   23867           0 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_12_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23868             : 
   23869             :   /* function exit code */
   23870           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   23871           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   23872           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   23873             :   {
   23874           0 :     Py_ssize_t __pyx_temp;
   23875           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   23876             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   23877             :     }
   23878             :   }
   23879             :   __Pyx_RefNannyFinishContext();
   23880             :   return __pyx_r;
   23881             : }
   23882             : 
   23883           0 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_12_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   23884           0 :   PyObject *__pyx_r = NULL;
   23885             :   __Pyx_RefNannyDeclarations
   23886           0 :   __Pyx_RefNannySetupContext("__pyx_fuse_4_sosfilt", 1);
   23887             : 
   23888             :   /* "scipy/signal/_sosfilt.pyx":88
   23889             :  *         _sosfilt_object(sos, x, zi)
   23890             :  *     else:
   23891             :  *         with nogil:             # <<<<<<<<<<<<<<
   23892             :  *             _sosfilt_float(sos, x, zi)
   23893             :  */
   23894             :   {
   23895             :       #ifdef WITH_THREAD
   23896           0 :       PyThreadState *_save;
   23897           0 :       _save = NULL;
   23898           0 :       Py_UNBLOCK_THREADS
   23899           0 :       __Pyx_FastGIL_Remember();
   23900             :       #endif
   23901             :       /*try:*/ {
   23902             : 
   23903             :         /* "scipy/signal/_sosfilt.pyx":89
   23904             :  *     else:
   23905             :  *         with nogil:
   23906             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   23907             :  */
   23908           0 :         __pyx_fuse_4__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   23909             :       }
   23910             : 
   23911             :       /* "scipy/signal/_sosfilt.pyx":88
   23912             :  *         _sosfilt_object(sos, x, zi)
   23913             :  *     else:
   23914             :  *         with nogil:             # <<<<<<<<<<<<<<
   23915             :  *             _sosfilt_float(sos, x, zi)
   23916             :  */
   23917             :       /*finally:*/ {
   23918             :         /*normal exit:*/{
   23919             :           #ifdef WITH_THREAD
   23920           0 :           __Pyx_FastGIL_Forget();
   23921           0 :           Py_BLOCK_THREADS
   23922             :           #endif
   23923           0 :           goto __pyx_L5;
   23924             :         }
   23925           0 :         __pyx_L5:;
   23926             :       }
   23927             :   }
   23928             : 
   23929             :   /* "scipy/signal/_sosfilt.pyx":82
   23930             :  * 
   23931             :  * 
   23932             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   23933             :  *              DTYPE_t [:, ::1] x,
   23934             :  *              DTYPE_t [:, :, ::1] zi):
   23935             :  */
   23936             : 
   23937             :   /* function exit code */
   23938           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   23939           0 :   __Pyx_XGIVEREF(__pyx_r);
   23940           0 :   __Pyx_RefNannyFinishContext();
   23941           0 :   return __pyx_r;
   23942             : }
   23943             : 
   23944             : /* Python wrapper */
   23945             : static PyObject *__pyx_fuse_5__pyx_pw_5scipy_6signal_8_sosfilt_15_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   23946             : static PyMethodDef __pyx_fuse_5__pyx_mdef_5scipy_6signal_8_sosfilt_15_sosfilt = {"__pyx_fuse_5_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_5__pyx_pw_5scipy_6signal_8_sosfilt_15_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   23947           0 : static PyObject *__pyx_fuse_5__pyx_pw_5scipy_6signal_8_sosfilt_15_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   23948           0 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   23949           0 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   23950           0 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   23951           0 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   23952           0 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   23953           0 :   PyObject* values[3] = {0,0,0};
   23954           0 :   int __pyx_lineno = 0;
   23955           0 :   const char *__pyx_filename = NULL;
   23956           0 :   int __pyx_clineno = 0;
   23957           0 :   PyObject *__pyx_r = 0;
   23958             :   __Pyx_RefNannyDeclarations
   23959           0 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   23960             :   #if CYTHON_ASSUME_SAFE_MACROS
   23961           0 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   23962             :   #else
   23963             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   23964             :   #endif
   23965           0 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   23966             :   {
   23967           0 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   23968           0 :     if (__pyx_kwds) {
   23969           0 :       Py_ssize_t kw_args;
   23970           0 :       switch (__pyx_nargs) {
   23971           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   23972           0 :         CYTHON_FALLTHROUGH;
   23973           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   23974           0 :         CYTHON_FALLTHROUGH;
   23975           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   23976           0 :         CYTHON_FALLTHROUGH;
   23977           0 :         case  0: break;
   23978           0 :         default: goto __pyx_L5_argtuple_error;
   23979             :       }
   23980           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   23981           0 :       switch (__pyx_nargs) {
   23982           0 :         case  0:
   23983           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   23984           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   23985           0 :           kw_args--;
   23986             :         }
   23987           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23988           0 :         else goto __pyx_L5_argtuple_error;
   23989           0 :         CYTHON_FALLTHROUGH;
   23990             :         case  1:
   23991           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   23992           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   23993           0 :           kw_args--;
   23994             :         }
   23995           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   23996             :         else {
   23997           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   23998             :         }
   23999           0 :         CYTHON_FALLTHROUGH;
   24000             :         case  2:
   24001           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   24002           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   24003           0 :           kw_args--;
   24004             :         }
   24005           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   24006             :         else {
   24007           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   24008             :         }
   24009             :       }
   24010           0 :       if (unlikely(kw_args > 0)) {
   24011           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   24012           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   24013             :       }
   24014           0 :     } else if (unlikely(__pyx_nargs != 3)) {
   24015           0 :       goto __pyx_L5_argtuple_error;
   24016             :     } else {
   24017           0 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   24018           0 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   24019           0 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   24020             :     }
   24021           0 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_long_double_complex(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   24022           0 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_long_double_complex(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   24023           0 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_long_double_complex(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   24024             :   }
   24025           0 :   goto __pyx_L6_skip;
   24026           0 :   __pyx_L5_argtuple_error:;
   24027           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   24028           0 :   __pyx_L6_skip:;
   24029           0 :   goto __pyx_L4_argument_unpacking_done;
   24030           0 :   __pyx_L3_error:;
   24031             :   {
   24032           0 :     Py_ssize_t __pyx_temp;
   24033           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   24034             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   24035             :     }
   24036             :   }
   24037           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   24038           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   24039           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   24040           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   24041           0 :   __Pyx_RefNannyFinishContext();
   24042           0 :   return NULL;
   24043           0 :   __pyx_L4_argument_unpacking_done:;
   24044           0 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_14_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   24045             : 
   24046             :   /* function exit code */
   24047           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   24048           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   24049           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   24050             :   {
   24051           0 :     Py_ssize_t __pyx_temp;
   24052           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   24053             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   24054             :     }
   24055             :   }
   24056             :   __Pyx_RefNannyFinishContext();
   24057             :   return __pyx_r;
   24058             : }
   24059             : 
   24060           0 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_14_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   24061           0 :   PyObject *__pyx_r = NULL;
   24062             :   __Pyx_RefNannyDeclarations
   24063           0 :   __Pyx_RefNannySetupContext("__pyx_fuse_5_sosfilt", 1);
   24064             : 
   24065             :   /* "scipy/signal/_sosfilt.pyx":88
   24066             :  *         _sosfilt_object(sos, x, zi)
   24067             :  *     else:
   24068             :  *         with nogil:             # <<<<<<<<<<<<<<
   24069             :  *             _sosfilt_float(sos, x, zi)
   24070             :  */
   24071             :   {
   24072             :       #ifdef WITH_THREAD
   24073           0 :       PyThreadState *_save;
   24074           0 :       _save = NULL;
   24075           0 :       Py_UNBLOCK_THREADS
   24076           0 :       __Pyx_FastGIL_Remember();
   24077             :       #endif
   24078             :       /*try:*/ {
   24079             : 
   24080             :         /* "scipy/signal/_sosfilt.pyx":89
   24081             :  *     else:
   24082             :  *         with nogil:
   24083             :  *             _sosfilt_float(sos, x, zi)             # <<<<<<<<<<<<<<
   24084             :  */
   24085           0 :         __pyx_fuse_5__pyx_f_5scipy_6signal_8_sosfilt__sosfilt_float(__pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   24086             :       }
   24087             : 
   24088             :       /* "scipy/signal/_sosfilt.pyx":88
   24089             :  *         _sosfilt_object(sos, x, zi)
   24090             :  *     else:
   24091             :  *         with nogil:             # <<<<<<<<<<<<<<
   24092             :  *             _sosfilt_float(sos, x, zi)
   24093             :  */
   24094             :       /*finally:*/ {
   24095             :         /*normal exit:*/{
   24096             :           #ifdef WITH_THREAD
   24097           0 :           __Pyx_FastGIL_Forget();
   24098           0 :           Py_BLOCK_THREADS
   24099             :           #endif
   24100           0 :           goto __pyx_L5;
   24101             :         }
   24102           0 :         __pyx_L5:;
   24103             :       }
   24104             :   }
   24105             : 
   24106             :   /* "scipy/signal/_sosfilt.pyx":82
   24107             :  * 
   24108             :  * 
   24109             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   24110             :  *              DTYPE_t [:, ::1] x,
   24111             :  *              DTYPE_t [:, :, ::1] zi):
   24112             :  */
   24113             : 
   24114             :   /* function exit code */
   24115           0 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   24116           0 :   __Pyx_XGIVEREF(__pyx_r);
   24117           0 :   __Pyx_RefNannyFinishContext();
   24118           0 :   return __pyx_r;
   24119             : }
   24120             : 
   24121             : /* Python wrapper */
   24122             : static PyObject *__pyx_fuse_6__pyx_pw_5scipy_6signal_8_sosfilt_17_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
   24123             : static PyMethodDef __pyx_fuse_6__pyx_mdef_5scipy_6signal_8_sosfilt_17_sosfilt = {"__pyx_fuse_6_sosfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_6__pyx_pw_5scipy_6signal_8_sosfilt_17_sosfilt, METH_VARARGS|METH_KEYWORDS, 0};
   24124           1 : static PyObject *__pyx_fuse_6__pyx_pw_5scipy_6signal_8_sosfilt_17_sosfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   24125           1 :   __Pyx_memviewslice __pyx_v_sos = { 0, 0, { 0 }, { 0 }, { 0 } };
   24126           1 :   __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
   24127           1 :   __Pyx_memviewslice __pyx_v_zi = { 0, 0, { 0 }, { 0 }, { 0 } };
   24128           1 :   CYTHON_UNUSED Py_ssize_t __pyx_nargs;
   24129           1 :   CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
   24130           1 :   PyObject* values[3] = {0,0,0};
   24131           1 :   int __pyx_lineno = 0;
   24132           1 :   const char *__pyx_filename = NULL;
   24133           1 :   int __pyx_clineno = 0;
   24134           1 :   PyObject *__pyx_r = 0;
   24135             :   __Pyx_RefNannyDeclarations
   24136           1 :   __Pyx_RefNannySetupContext("_sosfilt (wrapper)", 0);
   24137             :   #if CYTHON_ASSUME_SAFE_MACROS
   24138           1 :   __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
   24139             :   #else
   24140             :   __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
   24141             :   #endif
   24142           1 :   __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
   24143             :   {
   24144           1 :     PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sos,&__pyx_n_s_x,&__pyx_n_s_zi,0};
   24145           1 :     if (__pyx_kwds) {
   24146           0 :       Py_ssize_t kw_args;
   24147           0 :       switch (__pyx_nargs) {
   24148           0 :         case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   24149           0 :         CYTHON_FALLTHROUGH;
   24150           0 :         case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   24151           0 :         CYTHON_FALLTHROUGH;
   24152           0 :         case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   24153           0 :         CYTHON_FALLTHROUGH;
   24154           0 :         case  0: break;
   24155           0 :         default: goto __pyx_L5_argtuple_error;
   24156             :       }
   24157           0 :       kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
   24158           0 :       switch (__pyx_nargs) {
   24159           0 :         case  0:
   24160           0 :         if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sos)) != 0)) {
   24161           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
   24162           0 :           kw_args--;
   24163             :         }
   24164           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   24165           0 :         else goto __pyx_L5_argtuple_error;
   24166           0 :         CYTHON_FALLTHROUGH;
   24167             :         case  1:
   24168           0 :         if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
   24169           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
   24170           0 :           kw_args--;
   24171             :         }
   24172           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   24173             :         else {
   24174           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error)
   24175             :         }
   24176           0 :         CYTHON_FALLTHROUGH;
   24177             :         case  2:
   24178           0 :         if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zi)) != 0)) {
   24179           0 :           (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
   24180           0 :           kw_args--;
   24181             :         }
   24182           0 :         else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
   24183             :         else {
   24184           0 :           __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error)
   24185             :         }
   24186             :       }
   24187           0 :       if (unlikely(kw_args > 0)) {
   24188           0 :         const Py_ssize_t kwd_pos_args = __pyx_nargs;
   24189           0 :         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sosfilt") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
   24190             :       }
   24191           1 :     } else if (unlikely(__pyx_nargs != 3)) {
   24192           0 :       goto __pyx_L5_argtuple_error;
   24193             :     } else {
   24194           1 :       values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
   24195           1 :       values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
   24196           1 :       values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
   24197             :     }
   24198           1 :     __pyx_v_sos = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_sos.memview)) __PYX_ERR(0, 82, __pyx_L3_error)
   24199           1 :     __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 83, __pyx_L3_error)
   24200           1 :     __pyx_v_zi = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_object(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_zi.memview)) __PYX_ERR(0, 84, __pyx_L3_error)
   24201             :   }
   24202           1 :   goto __pyx_L6_skip;
   24203           0 :   __pyx_L5_argtuple_error:;
   24204           0 :   __Pyx_RaiseArgtupleInvalid("_sosfilt", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 82, __pyx_L3_error)
   24205           1 :   __pyx_L6_skip:;
   24206           1 :   goto __pyx_L4_argument_unpacking_done;
   24207           0 :   __pyx_L3_error:;
   24208             :   {
   24209           0 :     Py_ssize_t __pyx_temp;
   24210           0 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   24211             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   24212             :     }
   24213             :   }
   24214           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   24215           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   24216           0 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   24217           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   24218           0 :   __Pyx_RefNannyFinishContext();
   24219           0 :   return NULL;
   24220           1 :   __pyx_L4_argument_unpacking_done:;
   24221           1 :   __pyx_r = __pyx_pf_5scipy_6signal_8_sosfilt_16_sosfilt(__pyx_self, __pyx_v_sos, __pyx_v_x, __pyx_v_zi);
   24222             : 
   24223             :   /* function exit code */
   24224           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_sos, 1);
   24225           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_x, 1);
   24226           1 :   __PYX_XCLEAR_MEMVIEW(&__pyx_v_zi, 1);
   24227             :   {
   24228           1 :     Py_ssize_t __pyx_temp;
   24229           1 :     for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
   24230             :       __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
   24231             :     }
   24232             :   }
   24233             :   __Pyx_RefNannyFinishContext();
   24234             :   return __pyx_r;
   24235             : }
   24236             : 
   24237           1 : static PyObject *__pyx_pf_5scipy_6signal_8_sosfilt_16_sosfilt(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_sos, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_zi) {
   24238           1 :   PyObject *__pyx_r = NULL;
   24239             :   __Pyx_RefNannyDeclarations
   24240           1 :   PyObject *__pyx_t_1 = NULL;
   24241           1 :   PyObject *__pyx_t_2 = NULL;
   24242           1 :   PyObject *__pyx_t_3 = NULL;
   24243           1 :   PyObject *__pyx_t_4 = NULL;
   24244           1 :   PyObject *__pyx_t_5 = NULL;
   24245           1 :   PyObject *__pyx_t_6 = NULL;
   24246           1 :   unsigned int __pyx_t_7;
   24247           1 :   int __pyx_lineno = 0;
   24248           1 :   const char *__pyx_filename = NULL;
   24249           1 :   int __pyx_clineno = 0;
   24250           1 :   __Pyx_RefNannySetupContext("__pyx_fuse_6_sosfilt", 1);
   24251             : 
   24252             :   /* "scipy/signal/_sosfilt.pyx":86
   24253             :  *              DTYPE_t [:, :, ::1] zi):
   24254             :  *     if DTYPE_t is object:
   24255             :  *         _sosfilt_object(sos, x, zi)             # <<<<<<<<<<<<<<
   24256             :  *     else:
   24257             :  *         with nogil:
   24258             :  */
   24259           1 :   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sosfilt_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error)
   24260           1 :   __Pyx_GOTREF(__pyx_t_2);
   24261           1 :   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_sos, 2, (PyObject *(*)(char *)) __pyx_memview_get_object, (int (*)(char *, PyObject *)) __pyx_memview_set_object, 1);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error)
   24262           1 :   __Pyx_GOTREF(__pyx_t_3);
   24263           1 :   __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_x, 2, (PyObject *(*)(char *)) __pyx_memview_get_object, (int (*)(char *, PyObject *)) __pyx_memview_set_object, 1);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error)
   24264           1 :   __Pyx_GOTREF(__pyx_t_4);
   24265           1 :   __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_zi, 3, (PyObject *(*)(char *)) __pyx_memview_get_object, (int (*)(char *, PyObject *)) __pyx_memview_set_object, 1);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 86, __pyx_L1_error)
   24266           1 :   __Pyx_GOTREF(__pyx_t_5);
   24267           1 :   __pyx_t_6 = NULL;
   24268           1 :   __pyx_t_7 = 0;
   24269             :   #if CYTHON_UNPACK_METHODS
   24270           1 :   if (unlikely(PyMethod_Check(__pyx_t_2))) {
   24271           0 :     __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
   24272           0 :     if (likely(__pyx_t_6)) {
   24273           0 :       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
   24274           0 :       __Pyx_INCREF(__pyx_t_6);
   24275           0 :       __Pyx_INCREF(function);
   24276           0 :       __Pyx_DECREF_SET(__pyx_t_2, function);
   24277             :       __pyx_t_7 = 1;
   24278             :     }
   24279             :   }
   24280             :   #endif
   24281             :   {
   24282           1 :     PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_t_3, __pyx_t_4, __pyx_t_5};
   24283           1 :     __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7);
   24284           1 :     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
   24285           1 :     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   24286           1 :     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   24287           1 :     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   24288           1 :     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error)
   24289           1 :     __Pyx_GOTREF(__pyx_t_1);
   24290           1 :     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   24291             :   }
   24292           1 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   24293             : 
   24294             :   /* "scipy/signal/_sosfilt.pyx":82
   24295             :  * 
   24296             :  * 
   24297             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   24298             :  *              DTYPE_t [:, ::1] x,
   24299             :  *              DTYPE_t [:, :, ::1] zi):
   24300             :  */
   24301             : 
   24302             :   /* function exit code */
   24303           1 :   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   24304           1 :   goto __pyx_L0;
   24305           0 :   __pyx_L1_error:;
   24306           0 :   __Pyx_XDECREF(__pyx_t_1);
   24307           0 :   __Pyx_XDECREF(__pyx_t_2);
   24308           0 :   __Pyx_XDECREF(__pyx_t_3);
   24309           0 :   __Pyx_XDECREF(__pyx_t_4);
   24310           0 :   __Pyx_XDECREF(__pyx_t_5);
   24311           0 :   __Pyx_XDECREF(__pyx_t_6);
   24312           0 :   __Pyx_AddTraceback("scipy.signal._sosfilt._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   24313           0 :   __pyx_r = NULL;
   24314           1 :   __pyx_L0:;
   24315           1 :   __Pyx_XGIVEREF(__pyx_r);
   24316           1 :   __Pyx_RefNannyFinishContext();
   24317           1 :   return __pyx_r;
   24318             : }
   24319             : static struct __pyx_vtabstruct_array __pyx_vtable_array;
   24320             : 
   24321           0 : static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) {
   24322           0 :   struct __pyx_array_obj *p;
   24323           0 :   PyObject *o;
   24324             :   #if CYTHON_COMPILING_IN_LIMITED_API
   24325             :   allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
   24326             :   o = alloc_func(t, 0);
   24327             :   #else
   24328           0 :   if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
   24329           0 :     o = (*t->tp_alloc)(t, 0);
   24330             :   } else {
   24331           0 :     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   24332             :   }
   24333           0 :   if (unlikely(!o)) return 0;
   24334             :   #endif
   24335           0 :   p = ((struct __pyx_array_obj *)o);
   24336           0 :   p->__pyx_vtab = __pyx_vtabptr_array;
   24337           0 :   p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None);
   24338           0 :   p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None);
   24339           0 :   if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad;
   24340             :   return o;
   24341           0 :   bad:
   24342           0 :   Py_DECREF(o); o = 0;
   24343             :   return NULL;
   24344             : }
   24345             : 
   24346           0 : static void __pyx_tp_dealloc_array(PyObject *o) {
   24347           0 :   struct __pyx_array_obj *p = (struct __pyx_array_obj *)o;
   24348             :   #if CYTHON_USE_TP_FINALIZE
   24349           0 :   if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
   24350           0 :     if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_array) {
   24351           0 :       if (PyObject_CallFinalizerFromDealloc(o)) return;
   24352             :     }
   24353             :   }
   24354             :   #endif
   24355             :   {
   24356           0 :     PyObject *etype, *eval, *etb;
   24357           0 :     PyErr_Fetch(&etype, &eval, &etb);
   24358           0 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
   24359           0 :     __pyx_array___dealloc__(o);
   24360           0 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
   24361           0 :     PyErr_Restore(etype, eval, etb);
   24362             :   }
   24363           0 :   Py_CLEAR(p->mode);
   24364           0 :   Py_CLEAR(p->_format);
   24365             :   #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
   24366           0 :   (*Py_TYPE(o)->tp_free)(o);
   24367             :   #else
   24368             :   {
   24369             :     freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
   24370             :     if (tp_free) tp_free(o);
   24371             :   }
   24372             :   #endif
   24373             : }
   24374           0 : static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) {
   24375           0 :   PyObject *r;
   24376           0 :   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
   24377           0 :   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
   24378           0 :   Py_DECREF(x);
   24379             :   return r;
   24380             : }
   24381             : 
   24382           0 : static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) {
   24383           0 :   if (v) {
   24384           0 :     return __pyx_array___setitem__(o, i, v);
   24385             :   }
   24386             :   else {
   24387           0 :     __Pyx_TypeName o_type_name;
   24388           0 :     o_type_name = __Pyx_PyType_GetName(Py_TYPE(o));
   24389           0 :     PyErr_Format(PyExc_NotImplementedError,
   24390             :       "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name);
   24391           0 :     __Pyx_DECREF_TypeName(o_type_name);
   24392           0 :     return -1;
   24393             :   }
   24394             : }
   24395             : 
   24396           0 : static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) {
   24397           0 :   PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n);
   24398           0 :   if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
   24399           0 :     PyErr_Clear();
   24400           0 :     v = __pyx_array___getattr__(o, n);
   24401             :   }
   24402           0 :   return v;
   24403             : }
   24404             : 
   24405           0 : static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) {
   24406           0 :   return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o);
   24407             : }
   24408             : 
   24409             : static PyMethodDef __pyx_methods_array[] = {
   24410             :   {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0},
   24411             :   {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_array_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24412             :   {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_array_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24413             :   {0, 0, 0, 0}
   24414             : };
   24415             : 
   24416             : static struct PyGetSetDef __pyx_getsets_array[] = {
   24417             :   {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0},
   24418             :   {0, 0, 0, 0, 0}
   24419             : };
   24420             : #if CYTHON_USE_TYPE_SPECS
   24421             : #if !CYTHON_COMPILING_IN_LIMITED_API
   24422             : 
   24423             : static PyBufferProcs __pyx_tp_as_buffer_array = {
   24424             :   #if PY_MAJOR_VERSION < 3
   24425             :   0, /*bf_getreadbuffer*/
   24426             :   #endif
   24427             :   #if PY_MAJOR_VERSION < 3
   24428             :   0, /*bf_getwritebuffer*/
   24429             :   #endif
   24430             :   #if PY_MAJOR_VERSION < 3
   24431             :   0, /*bf_getsegcount*/
   24432             :   #endif
   24433             :   #if PY_MAJOR_VERSION < 3
   24434             :   0, /*bf_getcharbuffer*/
   24435             :   #endif
   24436             :   __pyx_array_getbuffer, /*bf_getbuffer*/
   24437             :   0, /*bf_releasebuffer*/
   24438             : };
   24439             : #endif
   24440             : static PyType_Slot __pyx_type___pyx_array_slots[] = {
   24441             :   {Py_tp_dealloc, (void *)__pyx_tp_dealloc_array},
   24442             :   {Py_sq_length, (void *)__pyx_array___len__},
   24443             :   {Py_sq_item, (void *)__pyx_sq_item_array},
   24444             :   {Py_mp_length, (void *)__pyx_array___len__},
   24445             :   {Py_mp_subscript, (void *)__pyx_array___getitem__},
   24446             :   {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_array},
   24447             :   {Py_tp_getattro, (void *)__pyx_tp_getattro_array},
   24448             :   #if defined(Py_bf_getbuffer)
   24449             :   {Py_bf_getbuffer, (void *)__pyx_array_getbuffer},
   24450             :   #endif
   24451             :   {Py_tp_methods, (void *)__pyx_methods_array},
   24452             :   {Py_tp_getset, (void *)__pyx_getsets_array},
   24453             :   {Py_tp_new, (void *)__pyx_tp_new_array},
   24454             :   {0, 0},
   24455             : };
   24456             : static PyType_Spec __pyx_type___pyx_array_spec = {
   24457             :   "scipy.signal._sosfilt.array",
   24458             :   sizeof(struct __pyx_array_obj),
   24459             :   0,
   24460             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_SEQUENCE,
   24461             :   __pyx_type___pyx_array_slots,
   24462             : };
   24463             : #else
   24464             : 
   24465             : static PySequenceMethods __pyx_tp_as_sequence_array = {
   24466             :   __pyx_array___len__, /*sq_length*/
   24467             :   0, /*sq_concat*/
   24468             :   0, /*sq_repeat*/
   24469             :   __pyx_sq_item_array, /*sq_item*/
   24470             :   0, /*sq_slice*/
   24471             :   0, /*sq_ass_item*/
   24472             :   0, /*sq_ass_slice*/
   24473             :   0, /*sq_contains*/
   24474             :   0, /*sq_inplace_concat*/
   24475             :   0, /*sq_inplace_repeat*/
   24476             : };
   24477             : 
   24478             : static PyMappingMethods __pyx_tp_as_mapping_array = {
   24479             :   __pyx_array___len__, /*mp_length*/
   24480             :   __pyx_array___getitem__, /*mp_subscript*/
   24481             :   __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/
   24482             : };
   24483             : 
   24484             : static PyBufferProcs __pyx_tp_as_buffer_array = {
   24485             :   #if PY_MAJOR_VERSION < 3
   24486             :   0, /*bf_getreadbuffer*/
   24487             :   #endif
   24488             :   #if PY_MAJOR_VERSION < 3
   24489             :   0, /*bf_getwritebuffer*/
   24490             :   #endif
   24491             :   #if PY_MAJOR_VERSION < 3
   24492             :   0, /*bf_getsegcount*/
   24493             :   #endif
   24494             :   #if PY_MAJOR_VERSION < 3
   24495             :   0, /*bf_getcharbuffer*/
   24496             :   #endif
   24497             :   __pyx_array_getbuffer, /*bf_getbuffer*/
   24498             :   0, /*bf_releasebuffer*/
   24499             : };
   24500             : 
   24501             : static PyTypeObject __pyx_type___pyx_array = {
   24502             :   PyVarObject_HEAD_INIT(0, 0)
   24503             :   "scipy.signal._sosfilt.""array", /*tp_name*/
   24504             :   sizeof(struct __pyx_array_obj), /*tp_basicsize*/
   24505             :   0, /*tp_itemsize*/
   24506             :   __pyx_tp_dealloc_array, /*tp_dealloc*/
   24507             :   #if PY_VERSION_HEX < 0x030800b4
   24508             :   0, /*tp_print*/
   24509             :   #endif
   24510             :   #if PY_VERSION_HEX >= 0x030800b4
   24511             :   0, /*tp_vectorcall_offset*/
   24512             :   #endif
   24513             :   0, /*tp_getattr*/
   24514             :   0, /*tp_setattr*/
   24515             :   #if PY_MAJOR_VERSION < 3
   24516             :   0, /*tp_compare*/
   24517             :   #endif
   24518             :   #if PY_MAJOR_VERSION >= 3
   24519             :   0, /*tp_as_async*/
   24520             :   #endif
   24521             :   0, /*tp_repr*/
   24522             :   0, /*tp_as_number*/
   24523             :   &__pyx_tp_as_sequence_array, /*tp_as_sequence*/
   24524             :   &__pyx_tp_as_mapping_array, /*tp_as_mapping*/
   24525             :   0, /*tp_hash*/
   24526             :   0, /*tp_call*/
   24527             :   0, /*tp_str*/
   24528             :   __pyx_tp_getattro_array, /*tp_getattro*/
   24529             :   0, /*tp_setattro*/
   24530             :   &__pyx_tp_as_buffer_array, /*tp_as_buffer*/
   24531             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_SEQUENCE, /*tp_flags*/
   24532             :   0, /*tp_doc*/
   24533             :   0, /*tp_traverse*/
   24534             :   0, /*tp_clear*/
   24535             :   0, /*tp_richcompare*/
   24536             :   0, /*tp_weaklistoffset*/
   24537             :   0, /*tp_iter*/
   24538             :   0, /*tp_iternext*/
   24539             :   __pyx_methods_array, /*tp_methods*/
   24540             :   0, /*tp_members*/
   24541             :   __pyx_getsets_array, /*tp_getset*/
   24542             :   0, /*tp_base*/
   24543             :   0, /*tp_dict*/
   24544             :   0, /*tp_descr_get*/
   24545             :   0, /*tp_descr_set*/
   24546             :   #if !CYTHON_USE_TYPE_SPECS
   24547             :   0, /*tp_dictoffset*/
   24548             :   #endif
   24549             :   0, /*tp_init*/
   24550             :   0, /*tp_alloc*/
   24551             :   __pyx_tp_new_array, /*tp_new*/
   24552             :   0, /*tp_free*/
   24553             :   0, /*tp_is_gc*/
   24554             :   0, /*tp_bases*/
   24555             :   0, /*tp_mro*/
   24556             :   0, /*tp_cache*/
   24557             :   0, /*tp_subclasses*/
   24558             :   0, /*tp_weaklist*/
   24559             :   0, /*tp_del*/
   24560             :   0, /*tp_version_tag*/
   24561             :   #if PY_VERSION_HEX >= 0x030400a1
   24562             :   #if CYTHON_USE_TP_FINALIZE
   24563             :   0, /*tp_finalize*/
   24564             :   #else
   24565             :   NULL, /*tp_finalize*/
   24566             :   #endif
   24567             :   #endif
   24568             :   #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   24569             :   0, /*tp_vectorcall*/
   24570             :   #endif
   24571             :   #if __PYX_NEED_TP_PRINT_SLOT == 1
   24572             :   0, /*tp_print*/
   24573             :   #endif
   24574             :   #if PY_VERSION_HEX >= 0x030C0000
   24575             :   0, /*tp_watched*/
   24576             :   #endif
   24577             :   #if PY_VERSION_HEX >= 0x030d00A4
   24578             :   0, /*tp_versions_used*/
   24579             :   #endif
   24580             :   #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   24581             :   0, /*tp_pypy_flags*/
   24582             :   #endif
   24583             : };
   24584             : #endif
   24585             : 
   24586           5 : static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
   24587           5 :   struct __pyx_MemviewEnum_obj *p;
   24588           5 :   PyObject *o;
   24589             :   #if CYTHON_COMPILING_IN_LIMITED_API
   24590             :   allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
   24591             :   o = alloc_func(t, 0);
   24592             :   #else
   24593           5 :   if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
   24594           5 :     o = (*t->tp_alloc)(t, 0);
   24595             :   } else {
   24596           0 :     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   24597             :   }
   24598           5 :   if (unlikely(!o)) return 0;
   24599             :   #endif
   24600           5 :   p = ((struct __pyx_MemviewEnum_obj *)o);
   24601           5 :   p->name = Py_None; Py_INCREF(Py_None);
   24602             :   return o;
   24603             : }
   24604             : 
   24605           0 : static void __pyx_tp_dealloc_Enum(PyObject *o) {
   24606           0 :   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
   24607             :   #if CYTHON_USE_TP_FINALIZE
   24608           0 :   if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
   24609           0 :     if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_Enum) {
   24610           0 :       if (PyObject_CallFinalizerFromDealloc(o)) return;
   24611             :     }
   24612             :   }
   24613             :   #endif
   24614           0 :   PyObject_GC_UnTrack(o);
   24615           0 :   Py_CLEAR(p->name);
   24616             :   #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
   24617           0 :   (*Py_TYPE(o)->tp_free)(o);
   24618             :   #else
   24619             :   {
   24620             :     freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
   24621             :     if (tp_free) tp_free(o);
   24622             :   }
   24623             :   #endif
   24624             : }
   24625             : 
   24626         175 : static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) {
   24627         175 :   int e;
   24628         175 :   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
   24629         175 :   if (p->name) {
   24630         175 :     e = (*v)(p->name, a); if (e) return e;
   24631             :   }
   24632             :   return 0;
   24633             : }
   24634             : 
   24635           0 : static int __pyx_tp_clear_Enum(PyObject *o) {
   24636           0 :   PyObject* tmp;
   24637           0 :   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
   24638           0 :   tmp = ((PyObject*)p->name);
   24639           0 :   p->name = Py_None; Py_INCREF(Py_None);
   24640           0 :   Py_XDECREF(tmp);
   24641           0 :   return 0;
   24642             : }
   24643             : 
   24644           0 : static PyObject *__pyx_specialmethod___pyx_MemviewEnum___repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
   24645           0 :   return __pyx_MemviewEnum___repr__(self);
   24646             : }
   24647             : 
   24648             : static PyMethodDef __pyx_methods_Enum[] = {
   24649             :   {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_MemviewEnum___repr__, METH_NOARGS|METH_COEXIST, 0},
   24650             :   {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24651             :   {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24652             :   {0, 0, 0, 0}
   24653             : };
   24654             : #if CYTHON_USE_TYPE_SPECS
   24655             : static PyType_Slot __pyx_type___pyx_MemviewEnum_slots[] = {
   24656             :   {Py_tp_dealloc, (void *)__pyx_tp_dealloc_Enum},
   24657             :   {Py_tp_repr, (void *)__pyx_MemviewEnum___repr__},
   24658             :   {Py_tp_traverse, (void *)__pyx_tp_traverse_Enum},
   24659             :   {Py_tp_clear, (void *)__pyx_tp_clear_Enum},
   24660             :   {Py_tp_methods, (void *)__pyx_methods_Enum},
   24661             :   {Py_tp_init, (void *)__pyx_MemviewEnum___init__},
   24662             :   {Py_tp_new, (void *)__pyx_tp_new_Enum},
   24663             :   {0, 0},
   24664             : };
   24665             : static PyType_Spec __pyx_type___pyx_MemviewEnum_spec = {
   24666             :   "scipy.signal._sosfilt.Enum",
   24667             :   sizeof(struct __pyx_MemviewEnum_obj),
   24668             :   0,
   24669             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
   24670             :   __pyx_type___pyx_MemviewEnum_slots,
   24671             : };
   24672             : #else
   24673             : 
   24674             : static PyTypeObject __pyx_type___pyx_MemviewEnum = {
   24675             :   PyVarObject_HEAD_INIT(0, 0)
   24676             :   "scipy.signal._sosfilt.""Enum", /*tp_name*/
   24677             :   sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/
   24678             :   0, /*tp_itemsize*/
   24679             :   __pyx_tp_dealloc_Enum, /*tp_dealloc*/
   24680             :   #if PY_VERSION_HEX < 0x030800b4
   24681             :   0, /*tp_print*/
   24682             :   #endif
   24683             :   #if PY_VERSION_HEX >= 0x030800b4
   24684             :   0, /*tp_vectorcall_offset*/
   24685             :   #endif
   24686             :   0, /*tp_getattr*/
   24687             :   0, /*tp_setattr*/
   24688             :   #if PY_MAJOR_VERSION < 3
   24689             :   0, /*tp_compare*/
   24690             :   #endif
   24691             :   #if PY_MAJOR_VERSION >= 3
   24692             :   0, /*tp_as_async*/
   24693             :   #endif
   24694             :   __pyx_MemviewEnum___repr__, /*tp_repr*/
   24695             :   0, /*tp_as_number*/
   24696             :   0, /*tp_as_sequence*/
   24697             :   0, /*tp_as_mapping*/
   24698             :   0, /*tp_hash*/
   24699             :   0, /*tp_call*/
   24700             :   0, /*tp_str*/
   24701             :   0, /*tp_getattro*/
   24702             :   0, /*tp_setattro*/
   24703             :   0, /*tp_as_buffer*/
   24704             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   24705             :   0, /*tp_doc*/
   24706             :   __pyx_tp_traverse_Enum, /*tp_traverse*/
   24707             :   __pyx_tp_clear_Enum, /*tp_clear*/
   24708             :   0, /*tp_richcompare*/
   24709             :   0, /*tp_weaklistoffset*/
   24710             :   0, /*tp_iter*/
   24711             :   0, /*tp_iternext*/
   24712             :   __pyx_methods_Enum, /*tp_methods*/
   24713             :   0, /*tp_members*/
   24714             :   0, /*tp_getset*/
   24715             :   0, /*tp_base*/
   24716             :   0, /*tp_dict*/
   24717             :   0, /*tp_descr_get*/
   24718             :   0, /*tp_descr_set*/
   24719             :   #if !CYTHON_USE_TYPE_SPECS
   24720             :   0, /*tp_dictoffset*/
   24721             :   #endif
   24722             :   __pyx_MemviewEnum___init__, /*tp_init*/
   24723             :   0, /*tp_alloc*/
   24724             :   __pyx_tp_new_Enum, /*tp_new*/
   24725             :   0, /*tp_free*/
   24726             :   0, /*tp_is_gc*/
   24727             :   0, /*tp_bases*/
   24728             :   0, /*tp_mro*/
   24729             :   0, /*tp_cache*/
   24730             :   0, /*tp_subclasses*/
   24731             :   0, /*tp_weaklist*/
   24732             :   0, /*tp_del*/
   24733             :   0, /*tp_version_tag*/
   24734             :   #if PY_VERSION_HEX >= 0x030400a1
   24735             :   #if CYTHON_USE_TP_FINALIZE
   24736             :   0, /*tp_finalize*/
   24737             :   #else
   24738             :   NULL, /*tp_finalize*/
   24739             :   #endif
   24740             :   #endif
   24741             :   #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   24742             :   0, /*tp_vectorcall*/
   24743             :   #endif
   24744             :   #if __PYX_NEED_TP_PRINT_SLOT == 1
   24745             :   0, /*tp_print*/
   24746             :   #endif
   24747             :   #if PY_VERSION_HEX >= 0x030C0000
   24748             :   0, /*tp_watched*/
   24749             :   #endif
   24750             :   #if PY_VERSION_HEX >= 0x030d00A4
   24751             :   0, /*tp_versions_used*/
   24752             :   #endif
   24753             :   #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   24754             :   0, /*tp_pypy_flags*/
   24755             :   #endif
   24756             : };
   24757             : #endif
   24758             : static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview;
   24759             : 
   24760         408 : static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) {
   24761         408 :   struct __pyx_memoryview_obj *p;
   24762         408 :   PyObject *o;
   24763             :   #if CYTHON_COMPILING_IN_LIMITED_API
   24764             :   allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
   24765             :   o = alloc_func(t, 0);
   24766             :   #else
   24767         408 :   if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
   24768         408 :     o = (*t->tp_alloc)(t, 0);
   24769             :   } else {
   24770           0 :     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
   24771             :   }
   24772         408 :   if (unlikely(!o)) return 0;
   24773             :   #endif
   24774         408 :   p = ((struct __pyx_memoryview_obj *)o);
   24775         408 :   p->__pyx_vtab = __pyx_vtabptr_memoryview;
   24776         408 :   p->obj = Py_None; Py_INCREF(Py_None);
   24777         408 :   p->_size = Py_None; Py_INCREF(Py_None);
   24778         408 :   p->_array_interface = Py_None; Py_INCREF(Py_None);
   24779         408 :   p->view.obj = NULL;
   24780         408 :   if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad;
   24781             :   return o;
   24782           0 :   bad:
   24783           0 :   Py_DECREF(o); o = 0;
   24784             :   return NULL;
   24785             : }
   24786             : 
   24787         408 : static void __pyx_tp_dealloc_memoryview(PyObject *o) {
   24788         408 :   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
   24789             :   #if CYTHON_USE_TP_FINALIZE
   24790         408 :   if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
   24791           0 :     if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_memoryview) {
   24792           0 :       if (PyObject_CallFinalizerFromDealloc(o)) return;
   24793             :     }
   24794             :   }
   24795             :   #endif
   24796         408 :   PyObject_GC_UnTrack(o);
   24797             :   {
   24798         408 :     PyObject *etype, *eval, *etb;
   24799         408 :     PyErr_Fetch(&etype, &eval, &etb);
   24800         408 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
   24801         408 :     __pyx_memoryview___dealloc__(o);
   24802         408 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
   24803         408 :     PyErr_Restore(etype, eval, etb);
   24804             :   }
   24805         408 :   Py_CLEAR(p->obj);
   24806         408 :   Py_CLEAR(p->_size);
   24807         408 :   Py_CLEAR(p->_array_interface);
   24808             :   #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
   24809         408 :   (*Py_TYPE(o)->tp_free)(o);
   24810             :   #else
   24811             :   {
   24812             :     freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
   24813             :     if (tp_free) tp_free(o);
   24814             :   }
   24815             :   #endif
   24816             : }
   24817             : 
   24818           0 : static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) {
   24819           0 :   int e;
   24820           0 :   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
   24821           0 :   if (p->obj) {
   24822           0 :     e = (*v)(p->obj, a); if (e) return e;
   24823             :   }
   24824           0 :   if (p->_size) {
   24825           0 :     e = (*v)(p->_size, a); if (e) return e;
   24826             :   }
   24827           0 :   if (p->_array_interface) {
   24828           0 :     e = (*v)(p->_array_interface, a); if (e) return e;
   24829             :   }
   24830           0 :   if (p->view.obj) {
   24831           0 :     e = (*v)(p->view.obj, a); if (e) return e;
   24832             :   }
   24833             :   return 0;
   24834             : }
   24835             : 
   24836           0 : static int __pyx_tp_clear_memoryview(PyObject *o) {
   24837           0 :   PyObject* tmp;
   24838           0 :   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
   24839           0 :   tmp = ((PyObject*)p->obj);
   24840           0 :   p->obj = Py_None; Py_INCREF(Py_None);
   24841           0 :   Py_XDECREF(tmp);
   24842           0 :   tmp = ((PyObject*)p->_size);
   24843           0 :   p->_size = Py_None; Py_INCREF(Py_None);
   24844           0 :   Py_XDECREF(tmp);
   24845           0 :   tmp = ((PyObject*)p->_array_interface);
   24846           0 :   p->_array_interface = Py_None; Py_INCREF(Py_None);
   24847           0 :   Py_XDECREF(tmp);
   24848           0 :   Py_CLEAR(p->view.obj);
   24849           0 :   return 0;
   24850             : }
   24851           0 : static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) {
   24852           0 :   PyObject *r;
   24853           0 :   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
   24854           0 :   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
   24855           0 :   Py_DECREF(x);
   24856             :   return r;
   24857             : }
   24858             : 
   24859           0 : static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) {
   24860           0 :   if (v) {
   24861           0 :     return __pyx_memoryview___setitem__(o, i, v);
   24862             :   }
   24863             :   else {
   24864           0 :     __Pyx_TypeName o_type_name;
   24865           0 :     o_type_name = __Pyx_PyType_GetName(Py_TYPE(o));
   24866           0 :     PyErr_Format(PyExc_NotImplementedError,
   24867             :       "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name);
   24868           0 :     __Pyx_DECREF_TypeName(o_type_name);
   24869           0 :     return -1;
   24870             :   }
   24871             : }
   24872             : 
   24873           0 : static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) {
   24874           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o);
   24875             : }
   24876             : 
   24877           0 : static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) {
   24878           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o);
   24879             : }
   24880             : 
   24881           0 : static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) {
   24882           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o);
   24883             : }
   24884             : 
   24885           0 : static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) {
   24886           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o);
   24887             : }
   24888             : 
   24889           0 : static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) {
   24890           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o);
   24891             : }
   24892             : 
   24893           0 : static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) {
   24894           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o);
   24895             : }
   24896             : 
   24897           0 : static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) {
   24898           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o);
   24899             : }
   24900             : 
   24901           0 : static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) {
   24902           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o);
   24903             : }
   24904             : 
   24905           0 : static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) {
   24906           0 :   return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o);
   24907             : }
   24908             : 
   24909           0 : static PyObject *__pyx_specialmethod___pyx_memoryview___repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
   24910           0 :   return __pyx_memoryview___repr__(self);
   24911             : }
   24912             : 
   24913             : static PyMethodDef __pyx_methods_memoryview[] = {
   24914             :   {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_memoryview___repr__, METH_NOARGS|METH_COEXIST, 0},
   24915             :   {"is_c_contig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_is_c_contig, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24916             :   {"is_f_contig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_is_f_contig, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24917             :   {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24918             :   {"copy_fortran", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_copy_fortran, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24919             :   {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryview_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24920             :   {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryview_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   24921             :   {0, 0, 0, 0}
   24922             : };
   24923             : 
   24924             : static struct PyGetSetDef __pyx_getsets_memoryview[] = {
   24925             :   {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0},
   24926             :   {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0},
   24927             :   {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0},
   24928             :   {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0},
   24929             :   {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0},
   24930             :   {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0},
   24931             :   {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0},
   24932             :   {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0},
   24933             :   {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0},
   24934             :   {0, 0, 0, 0, 0}
   24935             : };
   24936             : #if CYTHON_USE_TYPE_SPECS
   24937             : #if !CYTHON_COMPILING_IN_LIMITED_API
   24938             : 
   24939             : static PyBufferProcs __pyx_tp_as_buffer_memoryview = {
   24940             :   #if PY_MAJOR_VERSION < 3
   24941             :   0, /*bf_getreadbuffer*/
   24942             :   #endif
   24943             :   #if PY_MAJOR_VERSION < 3
   24944             :   0, /*bf_getwritebuffer*/
   24945             :   #endif
   24946             :   #if PY_MAJOR_VERSION < 3
   24947             :   0, /*bf_getsegcount*/
   24948             :   #endif
   24949             :   #if PY_MAJOR_VERSION < 3
   24950             :   0, /*bf_getcharbuffer*/
   24951             :   #endif
   24952             :   __pyx_memoryview_getbuffer, /*bf_getbuffer*/
   24953             :   0, /*bf_releasebuffer*/
   24954             : };
   24955             : #endif
   24956             : static PyType_Slot __pyx_type___pyx_memoryview_slots[] = {
   24957             :   {Py_tp_dealloc, (void *)__pyx_tp_dealloc_memoryview},
   24958             :   {Py_tp_repr, (void *)__pyx_memoryview___repr__},
   24959             :   {Py_sq_length, (void *)__pyx_memoryview___len__},
   24960             :   {Py_sq_item, (void *)__pyx_sq_item_memoryview},
   24961             :   {Py_mp_length, (void *)__pyx_memoryview___len__},
   24962             :   {Py_mp_subscript, (void *)__pyx_memoryview___getitem__},
   24963             :   {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_memoryview},
   24964             :   {Py_tp_str, (void *)__pyx_memoryview___str__},
   24965             :   #if defined(Py_bf_getbuffer)
   24966             :   {Py_bf_getbuffer, (void *)__pyx_memoryview_getbuffer},
   24967             :   #endif
   24968             :   {Py_tp_traverse, (void *)__pyx_tp_traverse_memoryview},
   24969             :   {Py_tp_clear, (void *)__pyx_tp_clear_memoryview},
   24970             :   {Py_tp_methods, (void *)__pyx_methods_memoryview},
   24971             :   {Py_tp_getset, (void *)__pyx_getsets_memoryview},
   24972             :   {Py_tp_new, (void *)__pyx_tp_new_memoryview},
   24973             :   {0, 0},
   24974             : };
   24975             : static PyType_Spec __pyx_type___pyx_memoryview_spec = {
   24976             :   "scipy.signal._sosfilt.memoryview",
   24977             :   sizeof(struct __pyx_memoryview_obj),
   24978             :   0,
   24979             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
   24980             :   __pyx_type___pyx_memoryview_slots,
   24981             : };
   24982             : #else
   24983             : 
   24984             : static PySequenceMethods __pyx_tp_as_sequence_memoryview = {
   24985             :   __pyx_memoryview___len__, /*sq_length*/
   24986             :   0, /*sq_concat*/
   24987             :   0, /*sq_repeat*/
   24988             :   __pyx_sq_item_memoryview, /*sq_item*/
   24989             :   0, /*sq_slice*/
   24990             :   0, /*sq_ass_item*/
   24991             :   0, /*sq_ass_slice*/
   24992             :   0, /*sq_contains*/
   24993             :   0, /*sq_inplace_concat*/
   24994             :   0, /*sq_inplace_repeat*/
   24995             : };
   24996             : 
   24997             : static PyMappingMethods __pyx_tp_as_mapping_memoryview = {
   24998             :   __pyx_memoryview___len__, /*mp_length*/
   24999             :   __pyx_memoryview___getitem__, /*mp_subscript*/
   25000             :   __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/
   25001             : };
   25002             : 
   25003             : static PyBufferProcs __pyx_tp_as_buffer_memoryview = {
   25004             :   #if PY_MAJOR_VERSION < 3
   25005             :   0, /*bf_getreadbuffer*/
   25006             :   #endif
   25007             :   #if PY_MAJOR_VERSION < 3
   25008             :   0, /*bf_getwritebuffer*/
   25009             :   #endif
   25010             :   #if PY_MAJOR_VERSION < 3
   25011             :   0, /*bf_getsegcount*/
   25012             :   #endif
   25013             :   #if PY_MAJOR_VERSION < 3
   25014             :   0, /*bf_getcharbuffer*/
   25015             :   #endif
   25016             :   __pyx_memoryview_getbuffer, /*bf_getbuffer*/
   25017             :   0, /*bf_releasebuffer*/
   25018             : };
   25019             : 
   25020             : static PyTypeObject __pyx_type___pyx_memoryview = {
   25021             :   PyVarObject_HEAD_INIT(0, 0)
   25022             :   "scipy.signal._sosfilt.""memoryview", /*tp_name*/
   25023             :   sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/
   25024             :   0, /*tp_itemsize*/
   25025             :   __pyx_tp_dealloc_memoryview, /*tp_dealloc*/
   25026             :   #if PY_VERSION_HEX < 0x030800b4
   25027             :   0, /*tp_print*/
   25028             :   #endif
   25029             :   #if PY_VERSION_HEX >= 0x030800b4
   25030             :   0, /*tp_vectorcall_offset*/
   25031             :   #endif
   25032             :   0, /*tp_getattr*/
   25033             :   0, /*tp_setattr*/
   25034             :   #if PY_MAJOR_VERSION < 3
   25035             :   0, /*tp_compare*/
   25036             :   #endif
   25037             :   #if PY_MAJOR_VERSION >= 3
   25038             :   0, /*tp_as_async*/
   25039             :   #endif
   25040             :   __pyx_memoryview___repr__, /*tp_repr*/
   25041             :   0, /*tp_as_number*/
   25042             :   &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/
   25043             :   &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/
   25044             :   0, /*tp_hash*/
   25045             :   0, /*tp_call*/
   25046             :   __pyx_memoryview___str__, /*tp_str*/
   25047             :   0, /*tp_getattro*/
   25048             :   0, /*tp_setattro*/
   25049             :   &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/
   25050             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
   25051             :   0, /*tp_doc*/
   25052             :   __pyx_tp_traverse_memoryview, /*tp_traverse*/
   25053             :   __pyx_tp_clear_memoryview, /*tp_clear*/
   25054             :   0, /*tp_richcompare*/
   25055             :   0, /*tp_weaklistoffset*/
   25056             :   0, /*tp_iter*/
   25057             :   0, /*tp_iternext*/
   25058             :   __pyx_methods_memoryview, /*tp_methods*/
   25059             :   0, /*tp_members*/
   25060             :   __pyx_getsets_memoryview, /*tp_getset*/
   25061             :   0, /*tp_base*/
   25062             :   0, /*tp_dict*/
   25063             :   0, /*tp_descr_get*/
   25064             :   0, /*tp_descr_set*/
   25065             :   #if !CYTHON_USE_TYPE_SPECS
   25066             :   0, /*tp_dictoffset*/
   25067             :   #endif
   25068             :   0, /*tp_init*/
   25069             :   0, /*tp_alloc*/
   25070             :   __pyx_tp_new_memoryview, /*tp_new*/
   25071             :   0, /*tp_free*/
   25072             :   0, /*tp_is_gc*/
   25073             :   0, /*tp_bases*/
   25074             :   0, /*tp_mro*/
   25075             :   0, /*tp_cache*/
   25076             :   0, /*tp_subclasses*/
   25077             :   0, /*tp_weaklist*/
   25078             :   0, /*tp_del*/
   25079             :   0, /*tp_version_tag*/
   25080             :   #if PY_VERSION_HEX >= 0x030400a1
   25081             :   #if CYTHON_USE_TP_FINALIZE
   25082             :   0, /*tp_finalize*/
   25083             :   #else
   25084             :   NULL, /*tp_finalize*/
   25085             :   #endif
   25086             :   #endif
   25087             :   #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   25088             :   0, /*tp_vectorcall*/
   25089             :   #endif
   25090             :   #if __PYX_NEED_TP_PRINT_SLOT == 1
   25091             :   0, /*tp_print*/
   25092             :   #endif
   25093             :   #if PY_VERSION_HEX >= 0x030C0000
   25094             :   0, /*tp_watched*/
   25095             :   #endif
   25096             :   #if PY_VERSION_HEX >= 0x030d00A4
   25097             :   0, /*tp_versions_used*/
   25098             :   #endif
   25099             :   #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   25100             :   0, /*tp_pypy_flags*/
   25101             :   #endif
   25102             : };
   25103             : #endif
   25104             : static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice;
   25105             : 
   25106           3 : static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) {
   25107           3 :   struct __pyx_memoryviewslice_obj *p;
   25108           3 :   PyObject *o = __pyx_tp_new_memoryview(t, a, k);
   25109           3 :   if (unlikely(!o)) return 0;
   25110           3 :   p = ((struct __pyx_memoryviewslice_obj *)o);
   25111           3 :   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice;
   25112           3 :   p->from_object = Py_None; Py_INCREF(Py_None);
   25113           3 :   p->from_slice.memview = NULL;
   25114           3 :   return o;
   25115             : }
   25116             : 
   25117           3 : static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) {
   25118           3 :   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
   25119             :   #if CYTHON_USE_TP_FINALIZE
   25120           3 :   if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
   25121           0 :     if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc__memoryviewslice) {
   25122           0 :       if (PyObject_CallFinalizerFromDealloc(o)) return;
   25123             :     }
   25124             :   }
   25125             :   #endif
   25126           3 :   PyObject_GC_UnTrack(o);
   25127             :   {
   25128           3 :     PyObject *etype, *eval, *etb;
   25129           3 :     PyErr_Fetch(&etype, &eval, &etb);
   25130           3 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
   25131           3 :     __pyx_memoryviewslice___dealloc__(o);
   25132           3 :     __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
   25133           3 :     PyErr_Restore(etype, eval, etb);
   25134             :   }
   25135           3 :   Py_CLEAR(p->from_object);
   25136           3 :   PyObject_GC_Track(o);
   25137           3 :   __pyx_tp_dealloc_memoryview(o);
   25138             : }
   25139             : 
   25140           0 : static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) {
   25141           0 :   int e;
   25142           0 :   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
   25143           0 :   e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e;
   25144           0 :   if (p->from_object) {
   25145           0 :     e = (*v)(p->from_object, a); if (e) return e;
   25146             :   }
   25147             :   return 0;
   25148             : }
   25149             : 
   25150           0 : static int __pyx_tp_clear__memoryviewslice(PyObject *o) {
   25151           0 :   PyObject* tmp;
   25152           0 :   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
   25153           0 :   __pyx_tp_clear_memoryview(o);
   25154           0 :   tmp = ((PyObject*)p->from_object);
   25155           0 :   p->from_object = Py_None; Py_INCREF(Py_None);
   25156           0 :   Py_XDECREF(tmp);
   25157           0 :   __PYX_XCLEAR_MEMVIEW(&p->from_slice, 1);
   25158           0 :   return 0;
   25159             : }
   25160             : 
   25161             : static PyMethodDef __pyx_methods__memoryviewslice[] = {
   25162             :   {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   25163             :   {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
   25164             :   {0, 0, 0, 0}
   25165             : };
   25166             : #if CYTHON_USE_TYPE_SPECS
   25167             : static PyType_Slot __pyx_type___pyx_memoryviewslice_slots[] = {
   25168             :   {Py_tp_dealloc, (void *)__pyx_tp_dealloc__memoryviewslice},
   25169             :   {Py_tp_doc, (void *)PyDoc_STR("Internal class for passing memoryview slices to Python")},
   25170             :   {Py_tp_traverse, (void *)__pyx_tp_traverse__memoryviewslice},
   25171             :   {Py_tp_clear, (void *)__pyx_tp_clear__memoryviewslice},
   25172             :   {Py_tp_methods, (void *)__pyx_methods__memoryviewslice},
   25173             :   {Py_tp_new, (void *)__pyx_tp_new__memoryviewslice},
   25174             :   {0, 0},
   25175             : };
   25176             : static PyType_Spec __pyx_type___pyx_memoryviewslice_spec = {
   25177             :   "scipy.signal._sosfilt._memoryviewslice",
   25178             :   sizeof(struct __pyx_memoryviewslice_obj),
   25179             :   0,
   25180             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_SEQUENCE,
   25181             :   __pyx_type___pyx_memoryviewslice_slots,
   25182             : };
   25183             : #else
   25184             : 
   25185             : static PyTypeObject __pyx_type___pyx_memoryviewslice = {
   25186             :   PyVarObject_HEAD_INIT(0, 0)
   25187             :   "scipy.signal._sosfilt.""_memoryviewslice", /*tp_name*/
   25188             :   sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/
   25189             :   0, /*tp_itemsize*/
   25190             :   __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/
   25191             :   #if PY_VERSION_HEX < 0x030800b4
   25192             :   0, /*tp_print*/
   25193             :   #endif
   25194             :   #if PY_VERSION_HEX >= 0x030800b4
   25195             :   0, /*tp_vectorcall_offset*/
   25196             :   #endif
   25197             :   0, /*tp_getattr*/
   25198             :   0, /*tp_setattr*/
   25199             :   #if PY_MAJOR_VERSION < 3
   25200             :   0, /*tp_compare*/
   25201             :   #endif
   25202             :   #if PY_MAJOR_VERSION >= 3
   25203             :   0, /*tp_as_async*/
   25204             :   #endif
   25205             :   #if CYTHON_COMPILING_IN_PYPY || 0
   25206             :   __pyx_memoryview___repr__, /*tp_repr*/
   25207             :   #else
   25208             :   0, /*tp_repr*/
   25209             :   #endif
   25210             :   0, /*tp_as_number*/
   25211             :   0, /*tp_as_sequence*/
   25212             :   0, /*tp_as_mapping*/
   25213             :   0, /*tp_hash*/
   25214             :   0, /*tp_call*/
   25215             :   #if CYTHON_COMPILING_IN_PYPY || 0
   25216             :   __pyx_memoryview___str__, /*tp_str*/
   25217             :   #else
   25218             :   0, /*tp_str*/
   25219             :   #endif
   25220             :   0, /*tp_getattro*/
   25221             :   0, /*tp_setattro*/
   25222             :   0, /*tp_as_buffer*/
   25223             :   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_SEQUENCE, /*tp_flags*/
   25224             :   PyDoc_STR("Internal class for passing memoryview slices to Python"), /*tp_doc*/
   25225             :   __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/
   25226             :   __pyx_tp_clear__memoryviewslice, /*tp_clear*/
   25227             :   0, /*tp_richcompare*/
   25228             :   0, /*tp_weaklistoffset*/
   25229             :   0, /*tp_iter*/
   25230             :   0, /*tp_iternext*/
   25231             :   __pyx_methods__memoryviewslice, /*tp_methods*/
   25232             :   0, /*tp_members*/
   25233             :   0, /*tp_getset*/
   25234             :   0, /*tp_base*/
   25235             :   0, /*tp_dict*/
   25236             :   0, /*tp_descr_get*/
   25237             :   0, /*tp_descr_set*/
   25238             :   #if !CYTHON_USE_TYPE_SPECS
   25239             :   0, /*tp_dictoffset*/
   25240             :   #endif
   25241             :   0, /*tp_init*/
   25242             :   0, /*tp_alloc*/
   25243             :   __pyx_tp_new__memoryviewslice, /*tp_new*/
   25244             :   0, /*tp_free*/
   25245             :   0, /*tp_is_gc*/
   25246             :   0, /*tp_bases*/
   25247             :   0, /*tp_mro*/
   25248             :   0, /*tp_cache*/
   25249             :   0, /*tp_subclasses*/
   25250             :   0, /*tp_weaklist*/
   25251             :   0, /*tp_del*/
   25252             :   0, /*tp_version_tag*/
   25253             :   #if PY_VERSION_HEX >= 0x030400a1
   25254             :   #if CYTHON_USE_TP_FINALIZE
   25255             :   0, /*tp_finalize*/
   25256             :   #else
   25257             :   NULL, /*tp_finalize*/
   25258             :   #endif
   25259             :   #endif
   25260             :   #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   25261             :   0, /*tp_vectorcall*/
   25262             :   #endif
   25263             :   #if __PYX_NEED_TP_PRINT_SLOT == 1
   25264             :   0, /*tp_print*/
   25265             :   #endif
   25266             :   #if PY_VERSION_HEX >= 0x030C0000
   25267             :   0, /*tp_watched*/
   25268             :   #endif
   25269             :   #if PY_VERSION_HEX >= 0x030d00A4
   25270             :   0, /*tp_versions_used*/
   25271             :   #endif
   25272             :   #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   25273             :   0, /*tp_pypy_flags*/
   25274             :   #endif
   25275             : };
   25276             : #endif
   25277             : 
   25278             : static PyMethodDef __pyx_methods[] = {
   25279             :   {0, 0, 0, 0}
   25280             : };
   25281             : #ifndef CYTHON_SMALL_CODE
   25282             : #if defined(__clang__)
   25283             :     #define CYTHON_SMALL_CODE
   25284             : #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
   25285             :     #define CYTHON_SMALL_CODE __attribute__((cold))
   25286             : #else
   25287             :     #define CYTHON_SMALL_CODE
   25288             : #endif
   25289             : #endif
   25290             : /* #### Code section: pystring_table ### */
   25291             : 
   25292           1 : static int __Pyx_CreateStringTabAndInitStrings(void) {
   25293           1 :   __Pyx_StringTabEntry __pyx_string_tab[] = {
   25294           1 :     {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
   25295           1 :     {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1},
   25296           1 :     {&__pyx_kp_s_All_dimensions_preceding_dimensi, __pyx_k_All_dimensions_preceding_dimensi, sizeof(__pyx_k_All_dimensions_preceding_dimensi), 0, 0, 1, 0},
   25297           1 :     {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
   25298           1 :     {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0},
   25299           1 :     {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0},
   25300           1 :     {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0},
   25301           1 :     {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0},
   25302           1 :     {&__pyx_kp_u_Cannot_index_with_type, __pyx_k_Cannot_index_with_type, sizeof(__pyx_k_Cannot_index_with_type), 0, 1, 0, 0},
   25303           1 :     {&__pyx_kp_s_Cannot_transpose_memoryview_with, __pyx_k_Cannot_transpose_memoryview_with, sizeof(__pyx_k_Cannot_transpose_memoryview_with), 0, 0, 1, 0},
   25304           1 :     {&__pyx_kp_s_Dimension_d_is_not_direct, __pyx_k_Dimension_d_is_not_direct, sizeof(__pyx_k_Dimension_d_is_not_direct), 0, 0, 1, 0},
   25305           1 :     {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
   25306           1 :     {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0},
   25307           1 :     {&__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_k_Expected_at_least_d_argument_s_g, sizeof(__pyx_k_Expected_at_least_d_argument_s_g), 0, 0, 1, 0},
   25308           1 :     {&__pyx_kp_s_Function_call_with_ambiguous_arg, __pyx_k_Function_call_with_ambiguous_arg, sizeof(__pyx_k_Function_call_with_ambiguous_arg), 0, 0, 1, 0},
   25309           1 :     {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
   25310           1 :     {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
   25311           1 :     {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
   25312           1 :     {&__pyx_kp_s_Index_out_of_bounds_axis_d, __pyx_k_Index_out_of_bounds_axis_d, sizeof(__pyx_k_Index_out_of_bounds_axis_d), 0, 0, 1, 0},
   25313           1 :     {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0},
   25314           1 :     {&__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 1, 0, 0},
   25315           1 :     {&__pyx_kp_u_Invalid_shape_in_axis, __pyx_k_Invalid_shape_in_axis, sizeof(__pyx_k_Invalid_shape_in_axis), 0, 1, 0, 0},
   25316           1 :     {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
   25317           1 :     {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0},
   25318           1 :     {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0},
   25319           1 :     {&__pyx_kp_s_No_matching_signature_found, __pyx_k_No_matching_signature_found, sizeof(__pyx_k_No_matching_signature_found), 0, 0, 1, 0},
   25320           1 :     {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1},
   25321           1 :     {&__pyx_kp_u_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 1, 0, 0},
   25322           1 :     {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
   25323           1 :     {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1},
   25324           1 :     {&__pyx_kp_s_Step_may_not_be_zero_axis_d, __pyx_k_Step_may_not_be_zero_axis_d, sizeof(__pyx_k_Step_may_not_be_zero_axis_d), 0, 0, 1, 0},
   25325           1 :     {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
   25326           1 :     {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
   25327           1 :     {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   25328           1 :     {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
   25329           1 :     {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
   25330           1 :     {&__pyx_kp_s__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 0, 1, 0},
   25331           1 :     {&__pyx_kp_u__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0, 0},
   25332           1 :     {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0},
   25333           1 :     {&__pyx_n_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 1},
   25334           1 :     {&__pyx_n_s__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 0, 1, 1},
   25335           1 :     {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0},
   25336           1 :     {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0},
   25337           1 :     {&__pyx_n_s_abc, __pyx_k_abc, sizeof(__pyx_k_abc), 0, 0, 1, 1},
   25338           1 :     {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
   25339           1 :     {&__pyx_kp_u_and, __pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0, 0},
   25340           1 :     {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
   25341           1 :     {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
   25342           1 :     {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1},
   25343           1 :     {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
   25344           1 :     {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1},
   25345           1 :     {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
   25346           1 :     {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1},
   25347           1 :     {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
   25348           1 :     {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
   25349           1 :     {&__pyx_kp_s_collections_abc, __pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 0, 1, 0},
   25350           1 :     {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0},
   25351           1 :     {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0},
   25352           1 :     {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
   25353           1 :     {&__pyx_n_s_defaults, __pyx_k_defaults, sizeof(__pyx_k_defaults), 0, 0, 1, 1},
   25354           1 :     {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
   25355           1 :     {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
   25356           1 :     {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1},
   25357           1 :     {&__pyx_kp_s_double_complex, __pyx_k_double_complex, sizeof(__pyx_k_double_complex), 0, 0, 1, 0},
   25358           1 :     {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
   25359           1 :     {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1},
   25360           1 :     {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
   25361           1 :     {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
   25362           1 :     {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
   25363           1 :     {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
   25364           1 :     {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
   25365           1 :     {&__pyx_n_s_float, __pyx_k_float, sizeof(__pyx_k_float), 0, 0, 1, 1},
   25366           1 :     {&__pyx_kp_s_float_complex, __pyx_k_float_complex, sizeof(__pyx_k_float_complex), 0, 0, 1, 0},
   25367           1 :     {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
   25368           1 :     {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1},
   25369           1 :     {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1},
   25370           1 :     {&__pyx_n_s_fused_sigindex, __pyx_k_fused_sigindex, sizeof(__pyx_k_fused_sigindex), 0, 0, 1, 1},
   25371           1 :     {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
   25372           1 :     {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
   25373           1 :     {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
   25374           1 :     {&__pyx_kp_u_got, __pyx_k_got, sizeof(__pyx_k_got), 0, 1, 0, 0},
   25375           1 :     {&__pyx_kp_u_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 1, 0, 0},
   25376           1 :     {&__pyx_kp_s_home_czgdp18079_Quansight_scipy, __pyx_k_home_czgdp18079_Quansight_scipy, sizeof(__pyx_k_home_czgdp18079_Quansight_scipy), 0, 0, 1, 0},
   25377           1 :     {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
   25378           1 :     {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
   25379           1 :     {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
   25380           1 :     {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
   25381           1 :     {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
   25382           1 :     {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
   25383           1 :     {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
   25384           1 :     {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
   25385           1 :     {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0},
   25386           1 :     {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1},
   25387           1 :     {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},
   25388           1 :     {&__pyx_kp_s_long_double, __pyx_k_long_double, sizeof(__pyx_k_long_double), 0, 0, 1, 0},
   25389           1 :     {&__pyx_kp_s_long_double_complex, __pyx_k_long_double_complex, sizeof(__pyx_k_long_double_complex), 0, 0, 1, 0},
   25390           1 :     {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
   25391           1 :     {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1},
   25392           1 :     {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
   25393           1 :     {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
   25394           1 :     {&__pyx_n_s_n_samples, __pyx_k_n_samples, sizeof(__pyx_k_n_samples), 0, 0, 1, 1},
   25395           1 :     {&__pyx_n_s_n_sections, __pyx_k_n_sections, sizeof(__pyx_k_n_sections), 0, 0, 1, 1},
   25396           1 :     {&__pyx_n_s_n_signals, __pyx_k_n_signals, sizeof(__pyx_k_n_signals), 0, 0, 1, 1},
   25397           1 :     {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
   25398           1 :     {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
   25399           1 :     {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
   25400           1 :     {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
   25401           1 :     {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
   25402           1 :     {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
   25403           1 :     {&__pyx_kp_u_numpy__core_multiarray_failed_to, __pyx_k_numpy__core_multiarray_failed_to, sizeof(__pyx_k_numpy__core_multiarray_failed_to), 0, 1, 0, 0},
   25404           1 :     {&__pyx_kp_u_numpy__core_umath_failed_to_impo, __pyx_k_numpy__core_umath_failed_to_impo, sizeof(__pyx_k_numpy__core_umath_failed_to_impo), 0, 1, 0, 0},
   25405           1 :     {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
   25406           1 :     {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
   25407           1 :     {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1},
   25408           1 :     {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
   25409           1 :     {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
   25410           1 :     {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
   25411           1 :     {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
   25412           1 :     {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
   25413           1 :     {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
   25414           1 :     {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1},
   25415           1 :     {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
   25416           1 :     {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
   25417           1 :     {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
   25418           1 :     {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
   25419           1 :     {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
   25420           1 :     {&__pyx_n_s_register, __pyx_k_register, sizeof(__pyx_k_register), 0, 0, 1, 1},
   25421           1 :     {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
   25422           1 :     {&__pyx_n_s_scipy_signal__sosfilt, __pyx_k_scipy_signal__sosfilt, sizeof(__pyx_k_scipy_signal__sosfilt), 0, 0, 1, 1},
   25423           1 :     {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
   25424           1 :     {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
   25425           1 :     {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
   25426           1 :     {&__pyx_n_s_signatures, __pyx_k_signatures, sizeof(__pyx_k_signatures), 0, 0, 1, 1},
   25427           1 :     {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
   25428           1 :     {&__pyx_n_s_sos, __pyx_k_sos, sizeof(__pyx_k_sos), 0, 0, 1, 1},
   25429           1 :     {&__pyx_n_s_sosfilt, __pyx_k_sosfilt, sizeof(__pyx_k_sosfilt), 0, 0, 1, 1},
   25430           1 :     {&__pyx_n_s_sosfilt_object, __pyx_k_sosfilt_object, sizeof(__pyx_k_sosfilt_object), 0, 0, 1, 1},
   25431           1 :     {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
   25432           1 :     {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
   25433           1 :     {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
   25434           1 :     {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
   25435           1 :     {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
   25436           1 :     {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0},
   25437           1 :     {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0},
   25438           1 :     {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0},
   25439           1 :     {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
   25440           1 :     {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},
   25441           1 :     {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1},
   25442           1 :     {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
   25443           1 :     {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
   25444           1 :     {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0},
   25445           1 :     {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0},
   25446           1 :     {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1},
   25447           1 :     {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
   25448           1 :     {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
   25449           1 :     {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1},
   25450           1 :     {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
   25451           1 :     {&__pyx_n_s_x_n, __pyx_k_x_n, sizeof(__pyx_k_x_n), 0, 0, 1, 1},
   25452           1 :     {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
   25453           1 :     {&__pyx_n_s_zi, __pyx_k_zi, sizeof(__pyx_k_zi), 0, 0, 1, 1},
   25454             :     {0, 0, 0, 0, 0, 0, 0}
   25455             :   };
   25456           1 :   return __Pyx_InitStrings(__pyx_string_tab);
   25457             : }
   25458             : /* #### Code section: cached_builtins ### */
   25459           1 : static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
   25460             :   #if PY_MAJOR_VERSION >= 3
   25461           1 :   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 43, __pyx_L1_error)
   25462             :   #else
   25463             :   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(0, 43, __pyx_L1_error)
   25464             :   #endif
   25465           1 :   __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 82, __pyx_L1_error)
   25466           1 :   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 82, __pyx_L1_error)
   25467           1 :   __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 100, __pyx_L1_error)
   25468           1 :   __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 156, __pyx_L1_error)
   25469           1 :   __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 159, __pyx_L1_error)
   25470           1 :   __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 261, __pyx_L1_error)
   25471           1 :   __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(1, 373, __pyx_L1_error)
   25472           1 :   __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 408, __pyx_L1_error)
   25473           1 :   __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 618, __pyx_L1_error)
   25474           1 :   __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 914, __pyx_L1_error)
   25475           1 :   __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1025, __pyx_L1_error)
   25476             :   return 0;
   25477             :   __pyx_L1_error:;
   25478             :   return -1;
   25479             : }
   25480             : /* #### Code section: cached_constants ### */
   25481             : 
   25482           1 : static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   25483             :   __Pyx_RefNannyDeclarations
   25484           1 :   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
   25485             : 
   25486             :   /* "View.MemoryView":582
   25487             :  *     def suboffsets(self):
   25488             :  *         if self.view.suboffsets == NULL:
   25489             :  *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
   25490             :  * 
   25491             :  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
   25492             :  */
   25493           1 :   __pyx_tuple__4 = PyTuple_New(1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 582, __pyx_L1_error)
   25494           1 :   __Pyx_GOTREF(__pyx_tuple__4);
   25495           1 :   __Pyx_INCREF(__pyx_int_neg_1);
   25496           1 :   __Pyx_GIVEREF(__pyx_int_neg_1);
   25497           1 :   if (__Pyx_PyTuple_SET_ITEM(__pyx_tuple__4, 0, __pyx_int_neg_1)) __PYX_ERR(1, 582, __pyx_L1_error);
   25498           1 :   __Pyx_GIVEREF(__pyx_tuple__4);
   25499             : 
   25500             :   /* "View.MemoryView":679
   25501             :  *     tup = <tuple>index if isinstance(index, tuple) else (index,)
   25502             :  * 
   25503             :  *     result = [slice(None)] * ndim             # <<<<<<<<<<<<<<
   25504             :  *     have_slices = False
   25505             :  *     seen_ellipsis = False
   25506             :  */
   25507           1 :   __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(1, 679, __pyx_L1_error)
   25508           1 :   __Pyx_GOTREF(__pyx_slice__5);
   25509           1 :   __Pyx_GIVEREF(__pyx_slice__5);
   25510             : 
   25511             :   /* "(tree fragment)":4
   25512             :  *     cdef object __pyx_PickleError
   25513             :  *     cdef object __pyx_result
   25514             :  *     if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931):             # <<<<<<<<<<<<<<
   25515             :  *         from pickle import PickleError as __pyx_PickleError
   25516             :  *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum
   25517             :  */
   25518           1 :   __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_136983863, __pyx_int_112105877, __pyx_int_184977713); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error)
   25519           1 :   __Pyx_GOTREF(__pyx_tuple__8);
   25520           1 :   __Pyx_GIVEREF(__pyx_tuple__8);
   25521             : 
   25522             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025
   25523             :  *         __pyx_import_array()
   25524             :  *     except Exception:
   25525             :  *         raise ImportError("numpy._core.multiarray failed to import")             # <<<<<<<<<<<<<<
   25526             :  * 
   25527             :  * cdef inline int import_umath() except -1:
   25528             :  */
   25529           1 :   __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_numpy__core_multiarray_failed_to); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 1025, __pyx_L1_error)
   25530           1 :   __Pyx_GOTREF(__pyx_tuple__9);
   25531           1 :   __Pyx_GIVEREF(__pyx_tuple__9);
   25532             : 
   25533             :   /* "../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1031
   25534             :  *         _import_umath()
   25535             :  *     except Exception:
   25536             :  *         raise ImportError("numpy._core.umath failed to import")             # <<<<<<<<<<<<<<
   25537             :  * 
   25538             :  * cdef inline int import_ufunc() except -1:
   25539             :  */
   25540           1 :   __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_numpy__core_umath_failed_to_impo); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 1031, __pyx_L1_error)
   25541           1 :   __Pyx_GOTREF(__pyx_tuple__10);
   25542           1 :   __Pyx_GIVEREF(__pyx_tuple__10);
   25543             : 
   25544             :   /* "scipy/signal/_sosfilt.pyx":82
   25545             :  * 
   25546             :  * 
   25547             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   25548             :  *              DTYPE_t [:, ::1] x,
   25549             :  *              DTYPE_t [:, :, ::1] zi):
   25550             :  */
   25551           1 :   __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 82, __pyx_L1_error)
   25552           1 :   __Pyx_GOTREF(__pyx_tuple__13);
   25553           1 :   __Pyx_GIVEREF(__pyx_tuple__13);
   25554           1 :   __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 82, __pyx_L1_error)
   25555           1 :   __Pyx_GOTREF(__pyx_tuple__14);
   25556           1 :   __Pyx_GIVEREF(__pyx_tuple__14);
   25557             : 
   25558             :   /* "View.MemoryView":100
   25559             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   25560             :  * try:
   25561             :  *     if __import__("sys").version_info >= (3, 3):             # <<<<<<<<<<<<<<
   25562             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   25563             :  *     else:
   25564             :  */
   25565           1 :   __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_sys); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 100, __pyx_L1_error)
   25566           1 :   __Pyx_GOTREF(__pyx_tuple__15);
   25567           1 :   __Pyx_GIVEREF(__pyx_tuple__15);
   25568           1 :   __pyx_tuple__16 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 100, __pyx_L1_error)
   25569           1 :   __Pyx_GOTREF(__pyx_tuple__16);
   25570           1 :   __Pyx_GIVEREF(__pyx_tuple__16);
   25571             : 
   25572             :   /* "View.MemoryView":101
   25573             :  * try:
   25574             :  *     if __import__("sys").version_info >= (3, 3):
   25575             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence             # <<<<<<<<<<<<<<
   25576             :  *     else:
   25577             :  *         __pyx_collections_abc_Sequence = __import__("collections").Sequence
   25578             :  */
   25579           1 :   __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_collections_abc); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 101, __pyx_L1_error)
   25580           1 :   __Pyx_GOTREF(__pyx_tuple__17);
   25581           1 :   __Pyx_GIVEREF(__pyx_tuple__17);
   25582             : 
   25583             :   /* "View.MemoryView":103
   25584             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   25585             :  *     else:
   25586             :  *         __pyx_collections_abc_Sequence = __import__("collections").Sequence             # <<<<<<<<<<<<<<
   25587             :  * except:
   25588             :  * 
   25589             :  */
   25590           1 :   __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_collections); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 103, __pyx_L1_error)
   25591           1 :   __Pyx_GOTREF(__pyx_tuple__18);
   25592           1 :   __Pyx_GIVEREF(__pyx_tuple__18);
   25593             : 
   25594             :   /* "View.MemoryView":309
   25595             :  *         return self.name
   25596             :  * 
   25597             :  * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
   25598             :  * cdef strided = Enum("<strided and direct>") # default
   25599             :  * cdef indirect = Enum("<strided and indirect>")
   25600             :  */
   25601           1 :   __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 309, __pyx_L1_error)
   25602           1 :   __Pyx_GOTREF(__pyx_tuple__19);
   25603           1 :   __Pyx_GIVEREF(__pyx_tuple__19);
   25604             : 
   25605             :   /* "View.MemoryView":310
   25606             :  * 
   25607             :  * cdef generic = Enum("<strided and direct or indirect>")
   25608             :  * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
   25609             :  * cdef indirect = Enum("<strided and indirect>")
   25610             :  * 
   25611             :  */
   25612           1 :   __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 310, __pyx_L1_error)
   25613           1 :   __Pyx_GOTREF(__pyx_tuple__20);
   25614           1 :   __Pyx_GIVEREF(__pyx_tuple__20);
   25615             : 
   25616             :   /* "View.MemoryView":311
   25617             :  * cdef generic = Enum("<strided and direct or indirect>")
   25618             :  * cdef strided = Enum("<strided and direct>") # default
   25619             :  * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
   25620             :  * 
   25621             :  * 
   25622             :  */
   25623           1 :   __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 311, __pyx_L1_error)
   25624           1 :   __Pyx_GOTREF(__pyx_tuple__21);
   25625           1 :   __Pyx_GIVEREF(__pyx_tuple__21);
   25626             : 
   25627             :   /* "View.MemoryView":314
   25628             :  * 
   25629             :  * 
   25630             :  * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
   25631             :  * cdef indirect_contiguous = Enum("<contiguous and indirect>")
   25632             :  * 
   25633             :  */
   25634           1 :   __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 314, __pyx_L1_error)
   25635           1 :   __Pyx_GOTREF(__pyx_tuple__22);
   25636           1 :   __Pyx_GIVEREF(__pyx_tuple__22);
   25637             : 
   25638             :   /* "View.MemoryView":315
   25639             :  * 
   25640             :  * cdef contiguous = Enum("<contiguous and direct>")
   25641             :  * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
   25642             :  * 
   25643             :  * 
   25644             :  */
   25645           1 :   __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 315, __pyx_L1_error)
   25646           1 :   __Pyx_GOTREF(__pyx_tuple__23);
   25647           1 :   __Pyx_GIVEREF(__pyx_tuple__23);
   25648             : 
   25649             :   /* "(tree fragment)":1
   25650             :  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
   25651             :  *     cdef object __pyx_PickleError
   25652             :  *     cdef object __pyx_result
   25653             :  */
   25654           1 :   __pyx_tuple__24 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 1, __pyx_L1_error)
   25655           1 :   __Pyx_GOTREF(__pyx_tuple__24);
   25656           1 :   __Pyx_GIVEREF(__pyx_tuple__24);
   25657           1 :   __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(1, 1, __pyx_L1_error)
   25658             : 
   25659             :   /* "scipy/signal/_sosfilt.pyx":59
   25660             :  * 
   25661             :  * 
   25662             :  * @cython.cdivision(True)             # <<<<<<<<<<<<<<
   25663             :  * @cython.boundscheck(False)
   25664             :  * @cython.wraparound(False)
   25665             :  */
   25666           1 :   __pyx_tuple__26 = PyTuple_Pack(10, __pyx_n_s_sos, __pyx_n_s_x, __pyx_n_s_zi, __pyx_n_s_n_signals, __pyx_n_s_n_samples, __pyx_n_s_n_sections, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_s, __pyx_n_s_x_n); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 59, __pyx_L1_error)
   25667           1 :   __Pyx_GOTREF(__pyx_tuple__26);
   25668           1 :   __Pyx_GIVEREF(__pyx_tuple__26);
   25669           1 :   __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_czgdp18079_Quansight_scipy, __pyx_n_s_sosfilt_object, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 59, __pyx_L1_error)
   25670             : 
   25671             :   /* "scipy/signal/_sosfilt.pyx":82
   25672             :  * 
   25673             :  * 
   25674             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   25675             :  *              DTYPE_t [:, ::1] x,
   25676             :  *              DTYPE_t [:, :, ::1] zi):
   25677             :  */
   25678           1 :   __pyx_tuple__28 = PyTuple_Pack(3, __pyx_n_s_sos, __pyx_n_s_x, __pyx_n_s_zi); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 82, __pyx_L1_error)
   25679           1 :   __Pyx_GOTREF(__pyx_tuple__28);
   25680           1 :   __Pyx_GIVEREF(__pyx_tuple__28);
   25681           1 :   __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_czgdp18079_Quansight_scipy, __pyx_n_s_sosfilt, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 82, __pyx_L1_error)
   25682             :   __Pyx_RefNannyFinishContext();
   25683             :   return 0;
   25684             :   __pyx_L1_error:;
   25685             :   __Pyx_RefNannyFinishContext();
   25686             :   return -1;
   25687             : }
   25688             : /* #### Code section: init_constants ### */
   25689             : 
   25690           1 : static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
   25691           1 :   __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
   25692           1 :   __pyx_umethod_PyDict_Type_get.method_name = &__pyx_n_s_get;
   25693           1 :   __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
   25694           1 :   __pyx_umethod_PyDict_Type_values.method_name = &__pyx_n_s_values;
   25695           1 :   if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
   25696           1 :   __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
   25697           1 :   __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   25698           1 :   __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
   25699           1 :   __pyx_int_112105877 = PyInt_FromLong(112105877L); if (unlikely(!__pyx_int_112105877)) __PYX_ERR(0, 1, __pyx_L1_error)
   25700           1 :   __pyx_int_136983863 = PyInt_FromLong(136983863L); if (unlikely(!__pyx_int_136983863)) __PYX_ERR(0, 1, __pyx_L1_error)
   25701           1 :   __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error)
   25702           1 :   __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   25703             :   return 0;
   25704             :   __pyx_L1_error:;
   25705             :   return -1;
   25706             : }
   25707             : /* #### Code section: init_globals ### */
   25708             : 
   25709           1 : static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
   25710             :   /* AssertionsEnabled.init */
   25711           1 :   if (likely(__Pyx_init_assertions_enabled() == 0)); else
   25712             : 
   25713           0 : if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
   25714             : 
   25715             :   return 0;
   25716           0 :   __pyx_L1_error:;
   25717           0 :   return -1;
   25718             : }
   25719             : /* #### Code section: init_module ### */
   25720             : 
   25721             : static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
   25722             : static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
   25723             : static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
   25724             : static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
   25725             : static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
   25726             : static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
   25727             : static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
   25728             : 
   25729           1 : static int __Pyx_modinit_global_init_code(void) {
   25730             :   __Pyx_RefNannyDeclarations
   25731           1 :   __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
   25732             :   /*--- Global init code ---*/
   25733           1 :   __pyx_collections_abc_Sequence = Py_None; Py_INCREF(Py_None);
   25734           1 :   generic = Py_None; Py_INCREF(Py_None);
   25735           1 :   strided = Py_None; Py_INCREF(Py_None);
   25736           1 :   indirect = Py_None; Py_INCREF(Py_None);
   25737           1 :   contiguous = Py_None; Py_INCREF(Py_None);
   25738           1 :   indirect_contiguous = Py_None; Py_INCREF(Py_None);
   25739           1 :   __Pyx_RefNannyFinishContext();
   25740           1 :   return 0;
   25741             : }
   25742             : 
   25743             : static int __Pyx_modinit_variable_export_code(void) {
   25744             :   __Pyx_RefNannyDeclarations
   25745             :   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
   25746             :   /*--- Variable export code ---*/
   25747             :   __Pyx_RefNannyFinishContext();
   25748             :   return 0;
   25749             : }
   25750             : 
   25751             : static int __Pyx_modinit_function_export_code(void) {
   25752             :   __Pyx_RefNannyDeclarations
   25753             :   __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
   25754             :   /*--- Function export code ---*/
   25755             :   __Pyx_RefNannyFinishContext();
   25756             :   return 0;
   25757             : }
   25758             : 
   25759           1 : static int __Pyx_modinit_type_init_code(void) {
   25760             :   __Pyx_RefNannyDeclarations
   25761           1 :   PyObject *__pyx_t_1 = NULL;
   25762           1 :   int __pyx_lineno = 0;
   25763           1 :   const char *__pyx_filename = NULL;
   25764           1 :   int __pyx_clineno = 0;
   25765           1 :   __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
   25766             :   /*--- Type init code ---*/
   25767           1 :   __pyx_vtabptr_array = &__pyx_vtable_array;
   25768           1 :   __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview;
   25769             :   #if CYTHON_USE_TYPE_SPECS
   25770             :   __pyx_array_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_array_spec, NULL); if (unlikely(!__pyx_array_type)) __PYX_ERR(1, 114, __pyx_L1_error)
   25771             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25772             :   __pyx_array_type->tp_as_buffer = &__pyx_tp_as_buffer_array;
   25773             :   if (!__pyx_array_type->tp_as_buffer->bf_releasebuffer && __pyx_array_type->tp_base->tp_as_buffer && __pyx_array_type->tp_base->tp_as_buffer->bf_releasebuffer) {
   25774             :     __pyx_array_type->tp_as_buffer->bf_releasebuffer = __pyx_array_type->tp_base->tp_as_buffer->bf_releasebuffer;
   25775             :   }
   25776             :   #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
   25777             :   /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
   25778             :   #elif defined(_MSC_VER)
   25779             :   #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
   25780             :   #else
   25781             :   #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
   25782             :   #endif
   25783             :   if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
   25784             :   #else
   25785           1 :   __pyx_array_type = &__pyx_type___pyx_array;
   25786             :   #endif
   25787             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25788             :   #endif
   25789             :   #if !CYTHON_USE_TYPE_SPECS
   25790           1 :   if (__Pyx_PyType_Ready(__pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
   25791             :   #endif
   25792             :   #if PY_MAJOR_VERSION < 3
   25793             :   __pyx_array_type->tp_print = 0;
   25794             :   #endif
   25795           1 :   if (__Pyx_SetVtable(__pyx_array_type, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
   25796             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25797           1 :   if (__Pyx_MergeVtables(__pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
   25798             :   #endif
   25799             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25800           1 :   if (__Pyx_setup_reduce((PyObject *) __pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
   25801             :   #endif
   25802             :   #if CYTHON_USE_TYPE_SPECS
   25803             :   __pyx_MemviewEnum_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_MemviewEnum_spec, NULL); if (unlikely(!__pyx_MemviewEnum_type)) __PYX_ERR(1, 302, __pyx_L1_error)
   25804             :   if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error)
   25805             :   #else
   25806           1 :   __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum;
   25807             :   #endif
   25808             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25809             :   #endif
   25810             :   #if !CYTHON_USE_TYPE_SPECS
   25811           1 :   if (__Pyx_PyType_Ready(__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error)
   25812             :   #endif
   25813             :   #if PY_MAJOR_VERSION < 3
   25814             :   __pyx_MemviewEnum_type->tp_print = 0;
   25815             :   #endif
   25816             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25817           1 :   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_MemviewEnum_type->tp_dictoffset && __pyx_MemviewEnum_type->tp_getattro == PyObject_GenericGetAttr)) {
   25818           1 :     __pyx_MemviewEnum_type->tp_getattro = __Pyx_PyObject_GenericGetAttr;
   25819             :   }
   25820             :   #endif
   25821             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25822           1 :   if (__Pyx_setup_reduce((PyObject *) __pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error)
   25823             :   #endif
   25824           1 :   __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview;
   25825           1 :   __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer;
   25826           1 :   __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice;
   25827           1 :   __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment;
   25828           1 :   __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar;
   25829           1 :   __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed;
   25830           1 :   __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object;
   25831           1 :   __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object;
   25832           1 :   __pyx_vtable_memoryview._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryview__get_base;
   25833             :   #if CYTHON_USE_TYPE_SPECS
   25834             :   __pyx_memoryview_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryview_spec, NULL); if (unlikely(!__pyx_memoryview_type)) __PYX_ERR(1, 337, __pyx_L1_error)
   25835             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25836             :   __pyx_memoryview_type->tp_as_buffer = &__pyx_tp_as_buffer_memoryview;
   25837             :   if (!__pyx_memoryview_type->tp_as_buffer->bf_releasebuffer && __pyx_memoryview_type->tp_base->tp_as_buffer && __pyx_memoryview_type->tp_base->tp_as_buffer->bf_releasebuffer) {
   25838             :     __pyx_memoryview_type->tp_as_buffer->bf_releasebuffer = __pyx_memoryview_type->tp_base->tp_as_buffer->bf_releasebuffer;
   25839             :   }
   25840             :   #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
   25841             :   /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
   25842             :   #elif defined(_MSC_VER)
   25843             :   #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
   25844             :   #else
   25845             :   #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
   25846             :   #endif
   25847             :   if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error)
   25848             :   #else
   25849           1 :   __pyx_memoryview_type = &__pyx_type___pyx_memoryview;
   25850             :   #endif
   25851             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25852             :   #endif
   25853             :   #if !CYTHON_USE_TYPE_SPECS
   25854           1 :   if (__Pyx_PyType_Ready(__pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error)
   25855             :   #endif
   25856             :   #if PY_MAJOR_VERSION < 3
   25857             :   __pyx_memoryview_type->tp_print = 0;
   25858             :   #endif
   25859             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25860           1 :   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_memoryview_type->tp_dictoffset && __pyx_memoryview_type->tp_getattro == PyObject_GenericGetAttr)) {
   25861           1 :     __pyx_memoryview_type->tp_getattro = __Pyx_PyObject_GenericGetAttr;
   25862             :   }
   25863             :   #endif
   25864           1 :   if (__Pyx_SetVtable(__pyx_memoryview_type, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 337, __pyx_L1_error)
   25865             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25866           1 :   if (__Pyx_MergeVtables(__pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error)
   25867             :   #endif
   25868             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25869           1 :   if (__Pyx_setup_reduce((PyObject *) __pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error)
   25870             :   #endif
   25871           1 :   __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice;
   25872           1 :   __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview;
   25873           1 :   __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object;
   25874           1 :   __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object;
   25875           1 :   __pyx_vtable__memoryviewslice.__pyx_base._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryviewslice__get_base;
   25876             :   #if CYTHON_USE_TYPE_SPECS
   25877             :   __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 952, __pyx_L1_error)
   25878             :   __Pyx_GOTREF(__pyx_t_1);
   25879             :   __pyx_memoryviewslice_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryviewslice_spec, __pyx_t_1);
   25880             :   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   25881             :   if (unlikely(!__pyx_memoryviewslice_type)) __PYX_ERR(1, 952, __pyx_L1_error)
   25882             :   if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error)
   25883             :   #else
   25884           1 :   __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice;
   25885             :   #endif
   25886             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25887           1 :   __pyx_memoryviewslice_type->tp_base = __pyx_memoryview_type;
   25888             :   #endif
   25889             :   #if !CYTHON_USE_TYPE_SPECS
   25890           1 :   if (__Pyx_PyType_Ready(__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error)
   25891             :   #endif
   25892             :   #if PY_MAJOR_VERSION < 3
   25893             :   __pyx_memoryviewslice_type->tp_print = 0;
   25894             :   #endif
   25895             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25896           1 :   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_memoryviewslice_type->tp_dictoffset && __pyx_memoryviewslice_type->tp_getattro == PyObject_GenericGetAttr)) {
   25897           1 :     __pyx_memoryviewslice_type->tp_getattro = __Pyx_PyObject_GenericGetAttr;
   25898             :   }
   25899             :   #endif
   25900           1 :   if (__Pyx_SetVtable(__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 952, __pyx_L1_error)
   25901             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25902           1 :   if (__Pyx_MergeVtables(__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error)
   25903             :   #endif
   25904             :   #if !CYTHON_COMPILING_IN_LIMITED_API
   25905           1 :   if (__Pyx_setup_reduce((PyObject *) __pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error)
   25906             :   #endif
   25907             :   __Pyx_RefNannyFinishContext();
   25908             :   return 0;
   25909           0 :   __pyx_L1_error:;
   25910           0 :   __Pyx_XDECREF(__pyx_t_1);
   25911           0 :   __Pyx_RefNannyFinishContext();
   25912           0 :   return -1;
   25913             : }
   25914             : 
   25915           1 : static int __Pyx_modinit_type_import_code(void) {
   25916             :   __Pyx_RefNannyDeclarations
   25917           1 :   PyObject *__pyx_t_1 = NULL;
   25918           1 :   int __pyx_lineno = 0;
   25919           1 :   const char *__pyx_filename = NULL;
   25920           1 :   int __pyx_clineno = 0;
   25921           1 :   __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
   25922             :   /*--- Type import code ---*/
   25923           1 :   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
   25924           1 :   __Pyx_GOTREF(__pyx_t_1);
   25925           1 :   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", 
   25926             :   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
   25927             :   sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject),
   25928             :   #elif CYTHON_COMPILING_IN_LIMITED_API
   25929             :   sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject),
   25930             :   #else
   25931             :   sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyHeapTypeObject),
   25932             :   #endif
   25933           1 :   __Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
   25934           1 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   25935           1 :   __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 271, __pyx_L1_error)
   25936           1 :   __Pyx_GOTREF(__pyx_t_1);
   25937           1 :   __pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyArray_Descr),__Pyx_ImportType_CheckSize_Ignore_3_0_11); if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 271, __pyx_L1_error)
   25938           1 :   __pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyArrayIterObject),__Pyx_ImportType_CheckSize_Ignore_3_0_11); if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 316, __pyx_L1_error)
   25939           1 :   __pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyArrayMultiIterObject),__Pyx_ImportType_CheckSize_Ignore_3_0_11); if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 320, __pyx_L1_error)
   25940           1 :   __pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyArrayObject),__Pyx_ImportType_CheckSize_Ignore_3_0_11); if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 359, __pyx_L1_error)
   25941           1 :   __pyx_ptype_5numpy_generic = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_generic) __PYX_ERR(2, 847, __pyx_L1_error)
   25942           1 :   __pyx_ptype_5numpy_number = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "number", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_number) __PYX_ERR(2, 849, __pyx_L1_error)
   25943           1 :   __pyx_ptype_5numpy_integer = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_integer) __PYX_ERR(2, 851, __pyx_L1_error)
   25944           1 :   __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 853, __pyx_L1_error)
   25945           1 :   __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 855, __pyx_L1_error)
   25946           1 :   __pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 857, __pyx_L1_error)
   25947           1 :   __pyx_ptype_5numpy_floating = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_floating) __PYX_ERR(2, 859, __pyx_L1_error)
   25948           1 :   __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 861, __pyx_L1_error)
   25949           1 :   __pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 863, __pyx_L1_error)
   25950           1 :   __pyx_ptype_5numpy_character = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "character", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_5numpy_character) __PYX_ERR(2, 865, __pyx_L1_error)
   25951           1 :   __pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_0_11(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyUFuncObject),__Pyx_ImportType_CheckSize_Ignore_3_0_11); if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 929, __pyx_L1_error)
   25952           1 :   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   25953             :   __Pyx_RefNannyFinishContext();
   25954             :   return 0;
   25955           0 :   __pyx_L1_error:;
   25956           0 :   __Pyx_XDECREF(__pyx_t_1);
   25957           0 :   __Pyx_RefNannyFinishContext();
   25958           0 :   return -1;
   25959             : }
   25960             : 
   25961             : static int __Pyx_modinit_variable_import_code(void) {
   25962             :   __Pyx_RefNannyDeclarations
   25963             :   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
   25964             :   /*--- Variable import code ---*/
   25965             :   __Pyx_RefNannyFinishContext();
   25966             :   return 0;
   25967             : }
   25968             : 
   25969             : static int __Pyx_modinit_function_import_code(void) {
   25970             :   __Pyx_RefNannyDeclarations
   25971             :   __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
   25972             :   /*--- Function import code ---*/
   25973             :   __Pyx_RefNannyFinishContext();
   25974             :   return 0;
   25975             : }
   25976             : 
   25977             : 
   25978             : #if PY_MAJOR_VERSION >= 3
   25979             : #if CYTHON_PEP489_MULTI_PHASE_INIT
   25980             : static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
   25981             : static int __pyx_pymod_exec__sosfilt(PyObject* module); /*proto*/
   25982             : static PyModuleDef_Slot __pyx_moduledef_slots[] = {
   25983             :   {Py_mod_create, (void*)__pyx_pymod_create},
   25984             :   {Py_mod_exec, (void*)__pyx_pymod_exec__sosfilt},
   25985             :   {0, NULL}
   25986             : };
   25987             : #endif
   25988             : 
   25989             : #ifdef __cplusplus
   25990             : namespace {
   25991             :   struct PyModuleDef __pyx_moduledef =
   25992             :   #else
   25993             :   static struct PyModuleDef __pyx_moduledef =
   25994             :   #endif
   25995             :   {
   25996             :       PyModuleDef_HEAD_INIT,
   25997             :       "_sosfilt",
   25998             :       0, /* m_doc */
   25999             :     #if CYTHON_PEP489_MULTI_PHASE_INIT
   26000             :       0, /* m_size */
   26001             :     #elif CYTHON_USE_MODULE_STATE
   26002             :       sizeof(__pyx_mstate), /* m_size */
   26003             :     #else
   26004             :       -1, /* m_size */
   26005             :     #endif
   26006             :       __pyx_methods /* m_methods */,
   26007             :     #if CYTHON_PEP489_MULTI_PHASE_INIT
   26008             :       __pyx_moduledef_slots, /* m_slots */
   26009             :     #else
   26010             :       NULL, /* m_reload */
   26011             :     #endif
   26012             :     #if CYTHON_USE_MODULE_STATE
   26013             :       __pyx_m_traverse, /* m_traverse */
   26014             :       __pyx_m_clear, /* m_clear */
   26015             :       NULL /* m_free */
   26016             :     #else
   26017             :       NULL, /* m_traverse */
   26018             :       NULL, /* m_clear */
   26019             :       NULL /* m_free */
   26020             :     #endif
   26021             :   };
   26022             :   #ifdef __cplusplus
   26023             : } /* anonymous namespace */
   26024             : #endif
   26025             : #endif
   26026             : 
   26027             : #ifndef CYTHON_NO_PYINIT_EXPORT
   26028             : #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
   26029             : #elif PY_MAJOR_VERSION < 3
   26030             : #ifdef __cplusplus
   26031             : #define __Pyx_PyMODINIT_FUNC extern "C" void
   26032             : #else
   26033             : #define __Pyx_PyMODINIT_FUNC void
   26034             : #endif
   26035             : #else
   26036             : #ifdef __cplusplus
   26037             : #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
   26038             : #else
   26039             : #define __Pyx_PyMODINIT_FUNC PyObject *
   26040             : #endif
   26041             : #endif
   26042             : 
   26043             : 
   26044             : #if PY_MAJOR_VERSION < 3
   26045             : __Pyx_PyMODINIT_FUNC init_sosfilt(void) CYTHON_SMALL_CODE; /*proto*/
   26046             : __Pyx_PyMODINIT_FUNC init_sosfilt(void)
   26047             : #else
   26048             : __Pyx_PyMODINIT_FUNC PyInit__sosfilt(void) CYTHON_SMALL_CODE; /*proto*/
   26049           1 : __Pyx_PyMODINIT_FUNC PyInit__sosfilt(void)
   26050             : #if CYTHON_PEP489_MULTI_PHASE_INIT
   26051             : {
   26052           1 :   return PyModuleDef_Init(&__pyx_moduledef);
   26053             : }
   26054           1 : static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
   26055             :     #if PY_VERSION_HEX >= 0x030700A1
   26056           1 :     static PY_INT64_T main_interpreter_id = -1;
   26057           1 :     PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
   26058           1 :     if (main_interpreter_id == -1) {
   26059           1 :         main_interpreter_id = current_id;
   26060           2 :         return (unlikely(current_id == -1)) ? -1 : 0;
   26061           0 :     } else if (unlikely(main_interpreter_id != current_id))
   26062             :     #else
   26063             :     static PyInterpreterState *main_interpreter = NULL;
   26064             :     PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
   26065             :     if (!main_interpreter) {
   26066             :         main_interpreter = current_interpreter;
   26067             :     } else if (unlikely(main_interpreter != current_interpreter))
   26068             :     #endif
   26069             :     {
   26070           0 :         PyErr_SetString(
   26071             :             PyExc_ImportError,
   26072             :             "Interpreter change detected - this module can only be loaded into one interpreter per process.");
   26073           0 :         return -1;
   26074             :     }
   26075             :     return 0;
   26076             : }
   26077             : #if CYTHON_COMPILING_IN_LIMITED_API
   26078             : static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
   26079             : #else
   26080           4 : static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
   26081             : #endif
   26082             : {
   26083           4 :     PyObject *value = PyObject_GetAttrString(spec, from_name);
   26084           4 :     int result = 0;
   26085           4 :     if (likely(value)) {
   26086           4 :         if (allow_none || value != Py_None) {
   26087             : #if CYTHON_COMPILING_IN_LIMITED_API
   26088             :             result = PyModule_AddObject(module, to_name, value);
   26089             : #else
   26090           3 :             result = PyDict_SetItemString(moddict, to_name, value);
   26091             : #endif
   26092             :         }
   26093           4 :         Py_DECREF(value);
   26094           0 :     } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
   26095           0 :         PyErr_Clear();
   26096             :     } else {
   26097             :         result = -1;
   26098             :     }
   26099           4 :     return result;
   26100             : }
   26101           1 : static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
   26102           1 :     PyObject *module = NULL, *moddict, *modname;
   26103           1 :     CYTHON_UNUSED_VAR(def);
   26104           1 :     if (__Pyx_check_single_interpreter())
   26105             :         return NULL;
   26106           1 :     if (__pyx_m)
   26107           0 :         return __Pyx_NewRef(__pyx_m);
   26108           1 :     modname = PyObject_GetAttrString(spec, "name");
   26109           1 :     if (unlikely(!modname)) goto bad;
   26110           1 :     module = PyModule_NewObject(modname);
   26111           1 :     Py_DECREF(modname);
   26112           1 :     if (unlikely(!module)) goto bad;
   26113             : #if CYTHON_COMPILING_IN_LIMITED_API
   26114             :     moddict = module;
   26115             : #else
   26116           1 :     moddict = PyModule_GetDict(module);
   26117           1 :     if (unlikely(!moddict)) goto bad;
   26118             : #endif
   26119           1 :     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
   26120           1 :     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
   26121           1 :     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
   26122           1 :     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
   26123             :     return module;
   26124           0 : bad:
   26125           0 :     Py_XDECREF(module);
   26126           0 :     return NULL;
   26127             : }
   26128             : 
   26129             : 
   26130           1 : static CYTHON_SMALL_CODE int __pyx_pymod_exec__sosfilt(PyObject *__pyx_pyinit_module)
   26131             : #endif
   26132             : #endif
   26133             : {
   26134           1 :   int stringtab_initialized = 0;
   26135             :   #if CYTHON_USE_MODULE_STATE
   26136             :   int pystate_addmodule_run = 0;
   26137             :   #endif
   26138           1 :   PyObject *__pyx_t_1 = NULL;
   26139           1 :   PyObject *__pyx_t_2 = NULL;
   26140           1 :   PyObject *__pyx_t_3 = NULL;
   26141           1 :   PyObject *__pyx_t_4 = NULL;
   26142           1 :   PyObject *__pyx_t_5 = NULL;
   26143           1 :   int __pyx_t_6;
   26144           1 :   PyObject *__pyx_t_7 = NULL;
   26145           1 :   static PyThread_type_lock __pyx_t_8[8];
   26146           1 :   int __pyx_t_9;
   26147           1 :   int __pyx_lineno = 0;
   26148           1 :   const char *__pyx_filename = NULL;
   26149           1 :   int __pyx_clineno = 0;
   26150             :   __Pyx_RefNannyDeclarations
   26151             :   #if CYTHON_PEP489_MULTI_PHASE_INIT
   26152           1 :   if (__pyx_m) {
   26153           0 :     if (__pyx_m == __pyx_pyinit_module) return 0;
   26154           0 :     PyErr_SetString(PyExc_RuntimeError, "Module '_sosfilt' has already been imported. Re-initialisation is not supported.");
   26155           0 :     return -1;
   26156             :   }
   26157             :   #elif PY_MAJOR_VERSION >= 3
   26158             :   if (__pyx_m) return __Pyx_NewRef(__pyx_m);
   26159             :   #endif
   26160             :   /*--- Module creation code ---*/
   26161             :   #if CYTHON_PEP489_MULTI_PHASE_INIT
   26162           1 :   __pyx_m = __pyx_pyinit_module;
   26163           1 :   Py_INCREF(__pyx_m);
   26164             :   #else
   26165             :   #if PY_MAJOR_VERSION < 3
   26166             :   __pyx_m = Py_InitModule4("_sosfilt", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
   26167             :   if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
   26168             :   #elif CYTHON_USE_MODULE_STATE
   26169             :   __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   26170             :   {
   26171             :     int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
   26172             :     __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "_sosfilt" pseudovariable */
   26173             :     if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
   26174             :     pystate_addmodule_run = 1;
   26175             :   }
   26176             :   #else
   26177             :   __pyx_m = PyModule_Create(&__pyx_moduledef);
   26178             :   if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
   26179             :   #endif
   26180             :   #endif
   26181           1 :   CYTHON_UNUSED_VAR(__pyx_t_1);
   26182           1 :   __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
   26183           1 :   Py_INCREF(__pyx_d);
   26184           1 :   __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
   26185           1 :   __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
   26186           1 :   if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26187             :   #if CYTHON_REFNANNY
   26188             : __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
   26189             : if (!__Pyx_RefNanny) {
   26190             :   PyErr_Clear();
   26191             :   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
   26192             :   if (!__Pyx_RefNanny)
   26193             :       Py_FatalError("failed to import 'refnanny' module");
   26194             : }
   26195             : #endif
   26196           1 :   __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__sosfilt(void)", 0);
   26197           1 :   if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26198             :   #ifdef __Pxy_PyFrame_Initialize_Offsets
   26199             :   __Pxy_PyFrame_Initialize_Offsets();
   26200             :   #endif
   26201           1 :   __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
   26202           1 :   __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
   26203           1 :   __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
   26204             :   #ifdef __Pyx_CyFunction_USED
   26205           1 :   if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26206             :   #endif
   26207             :   #ifdef __Pyx_FusedFunction_USED
   26208           1 :   if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26209             :   #endif
   26210             :   #ifdef __Pyx_Coroutine_USED
   26211             :   if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26212             :   #endif
   26213             :   #ifdef __Pyx_Generator_USED
   26214             :   if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26215             :   #endif
   26216             :   #ifdef __Pyx_AsyncGen_USED
   26217             :   if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26218             :   #endif
   26219             :   #ifdef __Pyx_StopAsyncIteration_USED
   26220             :   if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26221             :   #endif
   26222             :   /*--- Library function declarations ---*/
   26223             :   /*--- Threads initialization code ---*/
   26224             :   #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
   26225             :   PyEval_InitThreads();
   26226             :   #endif
   26227             :   /*--- Initialize various global constants etc. ---*/
   26228           1 :   if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26229           1 :   stringtab_initialized = 1;
   26230           1 :   if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26231             :   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
   26232             :   if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26233             :   #endif
   26234           1 :   if (__pyx_module_is_main_scipy__signal___sosfilt) {
   26235           0 :     if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26236             :   }
   26237             :   #if PY_MAJOR_VERSION >= 3
   26238             :   {
   26239           1 :     PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
   26240           1 :     if (!PyDict_GetItemString(modules, "scipy.signal._sosfilt")) {
   26241           0 :       if (unlikely((PyDict_SetItemString(modules, "scipy.signal._sosfilt", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
   26242             :     }
   26243             :   }
   26244             :   #endif
   26245             :   /*--- Builtin init code ---*/
   26246           1 :   if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26247             :   /*--- Constants init code ---*/
   26248           1 :   if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26249             :   /*--- Global type/function init code ---*/
   26250           1 :   (void)__Pyx_modinit_global_init_code();
   26251           1 :   (void)__Pyx_modinit_variable_export_code();
   26252           1 :   (void)__Pyx_modinit_function_export_code();
   26253           1 :   if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
   26254           1 :   if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
   26255           1 :   (void)__Pyx_modinit_variable_import_code();
   26256           1 :   (void)__Pyx_modinit_function_import_code();
   26257             :   /*--- Execution code ---*/
   26258             :   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
   26259             :   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26260             :   #endif
   26261             : 
   26262             :   /* "View.MemoryView":99
   26263             :  * 
   26264             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   26265             :  * try:             # <<<<<<<<<<<<<<
   26266             :  *     if __import__("sys").version_info >= (3, 3):
   26267             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26268             :  */
   26269             :   {
   26270           1 :     __Pyx_PyThreadState_declare
   26271           1 :     __Pyx_PyThreadState_assign
   26272           1 :     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
   26273           1 :     __Pyx_XGOTREF(__pyx_t_1);
   26274           1 :     __Pyx_XGOTREF(__pyx_t_2);
   26275           1 :     __Pyx_XGOTREF(__pyx_t_3);
   26276             :     /*try:*/ {
   26277             : 
   26278             :       /* "View.MemoryView":100
   26279             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   26280             :  * try:
   26281             :  *     if __import__("sys").version_info >= (3, 3):             # <<<<<<<<<<<<<<
   26282             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26283             :  *     else:
   26284             :  */
   26285           1 :       __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L2_error)
   26286           1 :       __Pyx_GOTREF(__pyx_t_4);
   26287           1 :       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_version_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 100, __pyx_L2_error)
   26288           1 :       __Pyx_GOTREF(__pyx_t_5);
   26289           1 :       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26290           1 :       __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_tuple__16, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L2_error)
   26291           1 :       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   26292           1 :       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 100, __pyx_L2_error)
   26293           1 :       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26294           1 :       if (__pyx_t_6) {
   26295             : 
   26296             :         /* "View.MemoryView":101
   26297             :  * try:
   26298             :  *     if __import__("sys").version_info >= (3, 3):
   26299             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence             # <<<<<<<<<<<<<<
   26300             :  *     else:
   26301             :  *         __pyx_collections_abc_Sequence = __import__("collections").Sequence
   26302             :  */
   26303           1 :         __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error)
   26304           1 :         __Pyx_GOTREF(__pyx_t_4);
   26305           1 :         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_abc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 101, __pyx_L2_error)
   26306           1 :         __Pyx_GOTREF(__pyx_t_5);
   26307           1 :         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26308           1 :         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error)
   26309           1 :         __Pyx_GOTREF(__pyx_t_4);
   26310           1 :         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   26311           1 :         __Pyx_XGOTREF(__pyx_collections_abc_Sequence);
   26312           1 :         __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_4);
   26313           1 :         __Pyx_GIVEREF(__pyx_t_4);
   26314           1 :         __pyx_t_4 = 0;
   26315             : 
   26316             :         /* "View.MemoryView":100
   26317             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   26318             :  * try:
   26319             :  *     if __import__("sys").version_info >= (3, 3):             # <<<<<<<<<<<<<<
   26320             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26321             :  *     else:
   26322             :  */
   26323           1 :         goto __pyx_L8;
   26324             :       }
   26325             : 
   26326             :       /* "View.MemoryView":103
   26327             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26328             :  *     else:
   26329             :  *         __pyx_collections_abc_Sequence = __import__("collections").Sequence             # <<<<<<<<<<<<<<
   26330             :  * except:
   26331             :  * 
   26332             :  */
   26333             :       /*else*/ {
   26334           0 :         __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 103, __pyx_L2_error)
   26335           0 :         __Pyx_GOTREF(__pyx_t_4);
   26336           0 :         __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 103, __pyx_L2_error)
   26337           0 :         __Pyx_GOTREF(__pyx_t_5);
   26338           0 :         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26339           0 :         __Pyx_XGOTREF(__pyx_collections_abc_Sequence);
   26340           0 :         __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_5);
   26341           0 :         __Pyx_GIVEREF(__pyx_t_5);
   26342           0 :         __pyx_t_5 = 0;
   26343             :       }
   26344           1 :       __pyx_L8:;
   26345             : 
   26346             :       /* "View.MemoryView":99
   26347             :  * 
   26348             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   26349             :  * try:             # <<<<<<<<<<<<<<
   26350             :  *     if __import__("sys").version_info >= (3, 3):
   26351             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26352             :  */
   26353             :     }
   26354           1 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   26355           1 :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   26356           1 :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   26357           1 :     goto __pyx_L7_try_end;
   26358           0 :     __pyx_L2_error:;
   26359           0 :     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   26360           0 :     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
   26361             : 
   26362             :     /* "View.MemoryView":104
   26363             :  *     else:
   26364             :  *         __pyx_collections_abc_Sequence = __import__("collections").Sequence
   26365             :  * except:             # <<<<<<<<<<<<<<
   26366             :  * 
   26367             :  *     __pyx_collections_abc_Sequence = None
   26368             :  */
   26369             :     /*except:*/ {
   26370           0 :       __Pyx_AddTraceback("View.MemoryView", __pyx_clineno, __pyx_lineno, __pyx_filename);
   26371           0 :       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 104, __pyx_L4_except_error)
   26372           0 :       __Pyx_XGOTREF(__pyx_t_5);
   26373           0 :       __Pyx_XGOTREF(__pyx_t_4);
   26374           0 :       __Pyx_XGOTREF(__pyx_t_7);
   26375             : 
   26376             :       /* "View.MemoryView":106
   26377             :  * except:
   26378             :  * 
   26379             :  *     __pyx_collections_abc_Sequence = None             # <<<<<<<<<<<<<<
   26380             :  * 
   26381             :  * 
   26382             :  */
   26383           0 :       __Pyx_INCREF(Py_None);
   26384           0 :       __Pyx_XGOTREF(__pyx_collections_abc_Sequence);
   26385           0 :       __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, Py_None);
   26386           0 :       __Pyx_GIVEREF(Py_None);
   26387           0 :       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
   26388           0 :       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   26389           0 :       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
   26390           0 :       goto __pyx_L3_exception_handled;
   26391             :     }
   26392             : 
   26393             :     /* "View.MemoryView":99
   26394             :  * 
   26395             :  * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence"
   26396             :  * try:             # <<<<<<<<<<<<<<
   26397             :  *     if __import__("sys").version_info >= (3, 3):
   26398             :  *         __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence
   26399             :  */
   26400           0 :     __pyx_L4_except_error:;
   26401           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   26402           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   26403           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   26404           0 :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   26405           0 :     goto __pyx_L1_error;
   26406           0 :     __pyx_L3_exception_handled:;
   26407           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   26408           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   26409           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   26410           0 :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   26411           1 :     __pyx_L7_try_end:;
   26412             :   }
   26413             : 
   26414             :   /* "View.MemoryView":241
   26415             :  * 
   26416             :  * 
   26417             :  *     try:             # <<<<<<<<<<<<<<
   26418             :  *         count = __pyx_collections_abc_Sequence.count
   26419             :  *         index = __pyx_collections_abc_Sequence.index
   26420             :  */
   26421             :   {
   26422           1 :     __Pyx_PyThreadState_declare
   26423           1 :     __Pyx_PyThreadState_assign
   26424           1 :     __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
   26425           1 :     __Pyx_XGOTREF(__pyx_t_3);
   26426           1 :     __Pyx_XGOTREF(__pyx_t_2);
   26427           1 :     __Pyx_XGOTREF(__pyx_t_1);
   26428             :     /*try:*/ {
   26429             : 
   26430             :       /* "View.MemoryView":242
   26431             :  * 
   26432             :  *     try:
   26433             :  *         count = __pyx_collections_abc_Sequence.count             # <<<<<<<<<<<<<<
   26434             :  *         index = __pyx_collections_abc_Sequence.index
   26435             :  *     except:
   26436             :  */
   26437           1 :       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 242, __pyx_L11_error)
   26438           1 :       __Pyx_GOTREF(__pyx_t_7);
   26439           1 :       if (__Pyx_SetItemOnTypeDict(__pyx_array_type, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(1, 242, __pyx_L11_error)
   26440           1 :       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26441           1 :       PyType_Modified(__pyx_array_type);
   26442             : 
   26443             :       /* "View.MemoryView":243
   26444             :  *     try:
   26445             :  *         count = __pyx_collections_abc_Sequence.count
   26446             :  *         index = __pyx_collections_abc_Sequence.index             # <<<<<<<<<<<<<<
   26447             :  *     except:
   26448             :  *         pass
   26449             :  */
   26450           1 :       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 243, __pyx_L11_error)
   26451           1 :       __Pyx_GOTREF(__pyx_t_7);
   26452           1 :       if (__Pyx_SetItemOnTypeDict(__pyx_array_type, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(1, 243, __pyx_L11_error)
   26453           1 :       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26454           1 :       PyType_Modified(__pyx_array_type);
   26455             : 
   26456             :       /* "View.MemoryView":241
   26457             :  * 
   26458             :  * 
   26459             :  *     try:             # <<<<<<<<<<<<<<
   26460             :  *         count = __pyx_collections_abc_Sequence.count
   26461             :  *         index = __pyx_collections_abc_Sequence.index
   26462             :  */
   26463             :     }
   26464           1 :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   26465           1 :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   26466           1 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   26467           1 :     goto __pyx_L16_try_end;
   26468           0 :     __pyx_L11_error:;
   26469           0 :     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   26470           0 :     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
   26471           0 :     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
   26472             : 
   26473             :     /* "View.MemoryView":244
   26474             :  *         count = __pyx_collections_abc_Sequence.count
   26475             :  *         index = __pyx_collections_abc_Sequence.index
   26476             :  *     except:             # <<<<<<<<<<<<<<
   26477             :  *         pass
   26478             :  * 
   26479             :  */
   26480             :     /*except:*/ {
   26481           0 :       __Pyx_ErrRestore(0,0,0);
   26482           0 :       goto __pyx_L12_exception_handled;
   26483             :     }
   26484           0 :     __pyx_L12_exception_handled:;
   26485           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   26486           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   26487           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   26488           0 :     __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
   26489           1 :     __pyx_L16_try_end:;
   26490             :   }
   26491             : 
   26492             :   /* "View.MemoryView":309
   26493             :  *         return self.name
   26494             :  * 
   26495             :  * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
   26496             :  * cdef strided = Enum("<strided and direct>") # default
   26497             :  * cdef indirect = Enum("<strided and indirect>")
   26498             :  */
   26499           1 :   __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 309, __pyx_L1_error)
   26500           1 :   __Pyx_GOTREF(__pyx_t_7);
   26501           1 :   __Pyx_XGOTREF(generic);
   26502           1 :   __Pyx_DECREF_SET(generic, __pyx_t_7);
   26503           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26504           1 :   __pyx_t_7 = 0;
   26505             : 
   26506             :   /* "View.MemoryView":310
   26507             :  * 
   26508             :  * cdef generic = Enum("<strided and direct or indirect>")
   26509             :  * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
   26510             :  * cdef indirect = Enum("<strided and indirect>")
   26511             :  * 
   26512             :  */
   26513           1 :   __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 310, __pyx_L1_error)
   26514           1 :   __Pyx_GOTREF(__pyx_t_7);
   26515           1 :   __Pyx_XGOTREF(strided);
   26516           1 :   __Pyx_DECREF_SET(strided, __pyx_t_7);
   26517           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26518           1 :   __pyx_t_7 = 0;
   26519             : 
   26520             :   /* "View.MemoryView":311
   26521             :  * cdef generic = Enum("<strided and direct or indirect>")
   26522             :  * cdef strided = Enum("<strided and direct>") # default
   26523             :  * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
   26524             :  * 
   26525             :  * 
   26526             :  */
   26527           1 :   __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 311, __pyx_L1_error)
   26528           1 :   __Pyx_GOTREF(__pyx_t_7);
   26529           1 :   __Pyx_XGOTREF(indirect);
   26530           1 :   __Pyx_DECREF_SET(indirect, __pyx_t_7);
   26531           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26532           1 :   __pyx_t_7 = 0;
   26533             : 
   26534             :   /* "View.MemoryView":314
   26535             :  * 
   26536             :  * 
   26537             :  * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
   26538             :  * cdef indirect_contiguous = Enum("<contiguous and indirect>")
   26539             :  * 
   26540             :  */
   26541           1 :   __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 314, __pyx_L1_error)
   26542           1 :   __Pyx_GOTREF(__pyx_t_7);
   26543           1 :   __Pyx_XGOTREF(contiguous);
   26544           1 :   __Pyx_DECREF_SET(contiguous, __pyx_t_7);
   26545           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26546           1 :   __pyx_t_7 = 0;
   26547             : 
   26548             :   /* "View.MemoryView":315
   26549             :  * 
   26550             :  * cdef contiguous = Enum("<contiguous and direct>")
   26551             :  * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
   26552             :  * 
   26553             :  * 
   26554             :  */
   26555           1 :   __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 315, __pyx_L1_error)
   26556           1 :   __Pyx_GOTREF(__pyx_t_7);
   26557           1 :   __Pyx_XGOTREF(indirect_contiguous);
   26558           1 :   __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_7);
   26559           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26560           1 :   __pyx_t_7 = 0;
   26561             : 
   26562             :   /* "View.MemoryView":323
   26563             :  * 
   26564             :  * 
   26565             :  * cdef int __pyx_memoryview_thread_locks_used = 0             # <<<<<<<<<<<<<<
   26566             :  * cdef PyThread_type_lock[8] __pyx_memoryview_thread_locks = [
   26567             :  *     PyThread_allocate_lock(),
   26568             :  */
   26569           1 :   __pyx_memoryview_thread_locks_used = 0;
   26570             : 
   26571             :   /* "View.MemoryView":324
   26572             :  * 
   26573             :  * cdef int __pyx_memoryview_thread_locks_used = 0
   26574             :  * cdef PyThread_type_lock[8] __pyx_memoryview_thread_locks = [             # <<<<<<<<<<<<<<
   26575             :  *     PyThread_allocate_lock(),
   26576             :  *     PyThread_allocate_lock(),
   26577             :  */
   26578           1 :   __pyx_t_8[0] = PyThread_allocate_lock();
   26579           1 :   __pyx_t_8[1] = PyThread_allocate_lock();
   26580           1 :   __pyx_t_8[2] = PyThread_allocate_lock();
   26581           1 :   __pyx_t_8[3] = PyThread_allocate_lock();
   26582           1 :   __pyx_t_8[4] = PyThread_allocate_lock();
   26583           1 :   __pyx_t_8[5] = PyThread_allocate_lock();
   26584           1 :   __pyx_t_8[6] = PyThread_allocate_lock();
   26585           1 :   __pyx_t_8[7] = PyThread_allocate_lock();
   26586           1 :   memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_8, sizeof(__pyx_memoryview_thread_locks[0]) * (8));
   26587             : 
   26588             :   /* "View.MemoryView":982
   26589             :  * 
   26590             :  * 
   26591             :  *     try:             # <<<<<<<<<<<<<<
   26592             :  *         count = __pyx_collections_abc_Sequence.count
   26593             :  *         index = __pyx_collections_abc_Sequence.index
   26594             :  */
   26595             :   {
   26596           1 :     __Pyx_PyThreadState_declare
   26597           1 :     __Pyx_PyThreadState_assign
   26598           1 :     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
   26599           1 :     __Pyx_XGOTREF(__pyx_t_1);
   26600           1 :     __Pyx_XGOTREF(__pyx_t_2);
   26601           1 :     __Pyx_XGOTREF(__pyx_t_3);
   26602             :     /*try:*/ {
   26603             : 
   26604             :       /* "View.MemoryView":983
   26605             :  * 
   26606             :  *     try:
   26607             :  *         count = __pyx_collections_abc_Sequence.count             # <<<<<<<<<<<<<<
   26608             :  *         index = __pyx_collections_abc_Sequence.index
   26609             :  *     except:
   26610             :  */
   26611           1 :       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 983, __pyx_L17_error)
   26612           1 :       __Pyx_GOTREF(__pyx_t_7);
   26613           1 :       if (__Pyx_SetItemOnTypeDict(__pyx_memoryviewslice_type, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(1, 983, __pyx_L17_error)
   26614           1 :       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26615           1 :       PyType_Modified(__pyx_memoryviewslice_type);
   26616             : 
   26617             :       /* "View.MemoryView":984
   26618             :  *     try:
   26619             :  *         count = __pyx_collections_abc_Sequence.count
   26620             :  *         index = __pyx_collections_abc_Sequence.index             # <<<<<<<<<<<<<<
   26621             :  *     except:
   26622             :  *         pass
   26623             :  */
   26624           1 :       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 984, __pyx_L17_error)
   26625           1 :       __Pyx_GOTREF(__pyx_t_7);
   26626           1 :       if (__Pyx_SetItemOnTypeDict(__pyx_memoryviewslice_type, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(1, 984, __pyx_L17_error)
   26627           1 :       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26628           1 :       PyType_Modified(__pyx_memoryviewslice_type);
   26629             : 
   26630             :       /* "View.MemoryView":982
   26631             :  * 
   26632             :  * 
   26633             :  *     try:             # <<<<<<<<<<<<<<
   26634             :  *         count = __pyx_collections_abc_Sequence.count
   26635             :  *         index = __pyx_collections_abc_Sequence.index
   26636             :  */
   26637             :     }
   26638           1 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   26639           1 :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   26640           1 :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   26641           1 :     goto __pyx_L22_try_end;
   26642           0 :     __pyx_L17_error:;
   26643           0 :     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   26644           0 :     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
   26645           0 :     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
   26646             : 
   26647             :     /* "View.MemoryView":985
   26648             :  *         count = __pyx_collections_abc_Sequence.count
   26649             :  *         index = __pyx_collections_abc_Sequence.index
   26650             :  *     except:             # <<<<<<<<<<<<<<
   26651             :  *         pass
   26652             :  * 
   26653             :  */
   26654             :     /*except:*/ {
   26655           0 :       __Pyx_ErrRestore(0,0,0);
   26656           0 :       goto __pyx_L18_exception_handled;
   26657             :     }
   26658           0 :     __pyx_L18_exception_handled:;
   26659           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   26660           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   26661           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   26662           0 :     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   26663           1 :     __pyx_L22_try_end:;
   26664             :   }
   26665             : 
   26666             :   /* "View.MemoryView":988
   26667             :  *         pass
   26668             :  * 
   26669             :  * try:             # <<<<<<<<<<<<<<
   26670             :  *     if __pyx_collections_abc_Sequence:
   26671             :  * 
   26672             :  */
   26673             :   {
   26674           1 :     __Pyx_PyThreadState_declare
   26675           1 :     __Pyx_PyThreadState_assign
   26676           1 :     __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
   26677           1 :     __Pyx_XGOTREF(__pyx_t_3);
   26678           1 :     __Pyx_XGOTREF(__pyx_t_2);
   26679           1 :     __Pyx_XGOTREF(__pyx_t_1);
   26680             :     /*try:*/ {
   26681             : 
   26682             :       /* "View.MemoryView":989
   26683             :  * 
   26684             :  * try:
   26685             :  *     if __pyx_collections_abc_Sequence:             # <<<<<<<<<<<<<<
   26686             :  * 
   26687             :  * 
   26688             :  */
   26689           1 :       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 989, __pyx_L23_error)
   26690           1 :       if (__pyx_t_6) {
   26691             : 
   26692             :         /* "View.MemoryView":993
   26693             :  * 
   26694             :  * 
   26695             :  *         __pyx_collections_abc_Sequence.register(_memoryviewslice)             # <<<<<<<<<<<<<<
   26696             :  *         __pyx_collections_abc_Sequence.register(array)
   26697             :  * except:
   26698             :  */
   26699           1 :         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_register); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 993, __pyx_L23_error)
   26700           1 :         __Pyx_GOTREF(__pyx_t_7);
   26701           1 :         __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_memoryviewslice_type)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 993, __pyx_L23_error)
   26702           1 :         __Pyx_GOTREF(__pyx_t_4);
   26703           1 :         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26704           1 :         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26705             : 
   26706             :         /* "View.MemoryView":994
   26707             :  * 
   26708             :  *         __pyx_collections_abc_Sequence.register(_memoryviewslice)
   26709             :  *         __pyx_collections_abc_Sequence.register(array)             # <<<<<<<<<<<<<<
   26710             :  * except:
   26711             :  *     pass  # ignore failure, it's a minor issue
   26712             :  */
   26713           1 :         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_register); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 994, __pyx_L23_error)
   26714           1 :         __Pyx_GOTREF(__pyx_t_4);
   26715           1 :         __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_array_type)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 994, __pyx_L23_error)
   26716           1 :         __Pyx_GOTREF(__pyx_t_7);
   26717           1 :         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26718           2 :         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26719             : 
   26720             :         /* "View.MemoryView":989
   26721             :  * 
   26722             :  * try:
   26723             :  *     if __pyx_collections_abc_Sequence:             # <<<<<<<<<<<<<<
   26724             :  * 
   26725             :  * 
   26726             :  */
   26727             :       }
   26728             : 
   26729             :       /* "View.MemoryView":988
   26730             :  *         pass
   26731             :  * 
   26732             :  * try:             # <<<<<<<<<<<<<<
   26733             :  *     if __pyx_collections_abc_Sequence:
   26734             :  * 
   26735             :  */
   26736             :     }
   26737           1 :     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   26738           1 :     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
   26739           1 :     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
   26740           1 :     goto __pyx_L28_try_end;
   26741           0 :     __pyx_L23_error:;
   26742           0 :     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   26743           0 :     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
   26744           0 :     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
   26745             : 
   26746             :     /* "View.MemoryView":995
   26747             :  *         __pyx_collections_abc_Sequence.register(_memoryviewslice)
   26748             :  *         __pyx_collections_abc_Sequence.register(array)
   26749             :  * except:             # <<<<<<<<<<<<<<
   26750             :  *     pass  # ignore failure, it's a minor issue
   26751             :  * 
   26752             :  */
   26753             :     /*except:*/ {
   26754           0 :       __Pyx_ErrRestore(0,0,0);
   26755           0 :       goto __pyx_L24_exception_handled;
   26756             :     }
   26757           0 :     __pyx_L24_exception_handled:;
   26758           0 :     __Pyx_XGIVEREF(__pyx_t_3);
   26759           0 :     __Pyx_XGIVEREF(__pyx_t_2);
   26760           0 :     __Pyx_XGIVEREF(__pyx_t_1);
   26761           0 :     __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
   26762           1 :     __pyx_L28_try_end:;
   26763             :   }
   26764             : 
   26765             :   /* "(tree fragment)":1
   26766             :  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
   26767             :  *     cdef object __pyx_PickleError
   26768             :  *     cdef object __pyx_result
   26769             :  */
   26770           1 :   __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1, __pyx_L1_error)
   26771           1 :   __Pyx_GOTREF(__pyx_t_7);
   26772           1 :   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
   26773           1 :   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26774             : 
   26775             :   /* "scipy/signal/_sosfilt.pyx":4
   26776             :  * cimport cython
   26777             :  * 
   26778             :  * np.import_array()             # <<<<<<<<<<<<<<
   26779             :  * 
   26780             :  * ctypedef fused DTYPE_floating_t:
   26781             :  */
   26782           1 :   __pyx_t_9 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 4, __pyx_L1_error)
   26783             : 
   26784             :   /* "scipy/signal/_sosfilt.pyx":59
   26785             :  * 
   26786             :  * 
   26787             :  * @cython.cdivision(True)             # <<<<<<<<<<<<<<
   26788             :  * @cython.boundscheck(False)
   26789             :  * @cython.wraparound(False)
   26790             :  */
   26791           1 :   __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_5scipy_6signal_8_sosfilt_1_sosfilt_object, 0, __pyx_n_s_sosfilt_object, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 59, __pyx_L1_error)
   26792           1 :   __Pyx_GOTREF(__pyx_t_7);
   26793           1 :   if (PyDict_SetItem(__pyx_d, __pyx_n_s_sosfilt_object, __pyx_t_7) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
   26794           1 :   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   26795             : 
   26796             :   /* "scipy/signal/_sosfilt.pyx":82
   26797             :  * 
   26798             :  * 
   26799             :  * def _sosfilt(DTYPE_t [:, ::1] sos,             # <<<<<<<<<<<<<<
   26800             :  *              DTYPE_t [:, ::1] x,
   26801             :  *              DTYPE_t [:, :, ::1] zi):
   26802             :  */
   26803           1 :   __pyx_t_7 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 82, __pyx_L1_error)
   26804           1 :   __Pyx_GOTREF(__pyx_t_7);
   26805           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_0__pyx_mdef_5scipy_6signal_8_sosfilt_5_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26806           1 :   __Pyx_GOTREF(__pyx_t_4);
   26807           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26808           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_float, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26809           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26810           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_1__pyx_mdef_5scipy_6signal_8_sosfilt_7_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26811           1 :   __Pyx_GOTREF(__pyx_t_4);
   26812           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26813           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_kp_s_float_complex, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26814           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26815           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_2__pyx_mdef_5scipy_6signal_8_sosfilt_9_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26816           1 :   __Pyx_GOTREF(__pyx_t_4);
   26817           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26818           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_double, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26819           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26820           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_3__pyx_mdef_5scipy_6signal_8_sosfilt_11_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26821           1 :   __Pyx_GOTREF(__pyx_t_4);
   26822           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26823           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_kp_s_double_complex, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26824           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26825           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_4__pyx_mdef_5scipy_6signal_8_sosfilt_13_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26826           1 :   __Pyx_GOTREF(__pyx_t_4);
   26827           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26828           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_kp_s_long_double, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26829           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26830           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_5__pyx_mdef_5scipy_6signal_8_sosfilt_15_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26831           1 :   __Pyx_GOTREF(__pyx_t_4);
   26832           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26833           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_kp_s_long_double_complex, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26834           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26835           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_fuse_6__pyx_mdef_5scipy_6signal_8_sosfilt_17_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26836           1 :   __Pyx_GOTREF(__pyx_t_4);
   26837           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26838           1 :   if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_object, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26839           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26840           1 :   __pyx_t_4 = __pyx_FusedFunction_New(&__pyx_mdef_5scipy_6signal_8_sosfilt_3_sosfilt, 0, __pyx_n_s_sosfilt, NULL, __pyx_n_s_scipy_signal__sosfilt, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
   26841           1 :   __Pyx_GOTREF(__pyx_t_4);
   26842           1 :   if (!__Pyx_CyFunction_InitDefaults(__pyx_t_4, sizeof(__pyx_defaults), 1)) __PYX_ERR(0, 82, __pyx_L1_error)
   26843           1 :   __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 82, __pyx_L1_error)
   26844           1 :   __Pyx_GOTREF(__pyx_t_5);
   26845           1 :   __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_4)->__pyx_arg__fused_sigindex = __pyx_t_5;
   26846           1 :   __Pyx_GIVEREF(__pyx_t_5);
   26847           1 :   __pyx_t_5 = 0;
   26848           2 :   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
   26849           1 :   ((__pyx_FusedFunctionObject *) __pyx_t_4)->__signatures__ = __pyx_t_7;
   26850           1 :   __Pyx_GIVEREF(__pyx_t_7);
   26851           1 :   __pyx_t_7 = 0;
   26852           1 :   if (PyDict_SetItem(__pyx_d, __pyx_n_s_sosfilt, __pyx_t_4) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
   26853           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26854             : 
   26855             :   /* "scipy/signal/_sosfilt.pyx":1
   26856             :  * cimport numpy as np             # <<<<<<<<<<<<<<
   26857             :  * cimport cython
   26858             :  * 
   26859             :  */
   26860           1 :   __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error)
   26861           1 :   __Pyx_GOTREF(__pyx_t_4);
   26862           1 :   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   26863           1 :   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   26864             : 
   26865             :   /*--- Wrapped vars code ---*/
   26866             : 
   26867           1 :   goto __pyx_L0;
   26868           0 :   __pyx_L1_error:;
   26869           0 :   __Pyx_XDECREF(__pyx_t_4);
   26870           0 :   __Pyx_XDECREF(__pyx_t_5);
   26871           0 :   __Pyx_XDECREF(__pyx_t_7);
   26872           0 :   if (__pyx_m) {
   26873           0 :     if (__pyx_d && stringtab_initialized) {
   26874           0 :       __Pyx_AddTraceback("init scipy.signal._sosfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
   26875             :     }
   26876             :     #if !CYTHON_USE_MODULE_STATE
   26877           0 :     Py_CLEAR(__pyx_m);
   26878             :     #else
   26879             :     Py_DECREF(__pyx_m);
   26880             :     if (pystate_addmodule_run) {
   26881             :       PyObject *tp, *value, *tb;
   26882             :       PyErr_Fetch(&tp, &value, &tb);
   26883             :       PyState_RemoveModule(&__pyx_moduledef);
   26884             :       PyErr_Restore(tp, value, tb);
   26885             :     }
   26886             :     #endif
   26887           0 :   } else if (!PyErr_Occurred()) {
   26888           0 :     PyErr_SetString(PyExc_ImportError, "init scipy.signal._sosfilt");
   26889             :   }
   26890           0 :   __pyx_L0:;
   26891           1 :   __Pyx_RefNannyFinishContext();
   26892             :   #if CYTHON_PEP489_MULTI_PHASE_INIT
   26893           1 :   return (__pyx_m != NULL) ? 0 : -1;
   26894             :   #elif PY_MAJOR_VERSION >= 3
   26895             :   return __pyx_m;
   26896             :   #else
   26897             :   return;
   26898             :   #endif
   26899             : }
   26900             : /* #### Code section: cleanup_globals ### */
   26901             : /* #### Code section: cleanup_module ### */
   26902             : /* #### Code section: main_method ### */
   26903             : /* #### Code section: utility_code_pragmas ### */
   26904             : #ifdef _MSC_VER
   26905             : #pragma warning( push )
   26906             : /* Warning 4127: conditional expression is constant
   26907             :  * Cython uses constant conditional expressions to allow in inline functions to be optimized at
   26908             :  * compile-time, so this warning is not useful
   26909             :  */
   26910             : #pragma warning( disable : 4127 )
   26911             : #endif
   26912             : 
   26913             : 
   26914             : 
   26915             : /* #### Code section: utility_code_def ### */
   26916             : 
   26917             : /* --- Runtime support code --- */
   26918             : /* Refnanny */
   26919             : #if CYTHON_REFNANNY
   26920             : static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
   26921             :     PyObject *m = NULL, *p = NULL;
   26922             :     void *r = NULL;
   26923             :     m = PyImport_ImportModule(modname);
   26924             :     if (!m) goto end;
   26925             :     p = PyObject_GetAttrString(m, "RefNannyAPI");
   26926             :     if (!p) goto end;
   26927             :     r = PyLong_AsVoidPtr(p);
   26928             : end:
   26929             :     Py_XDECREF(p);
   26930             :     Py_XDECREF(m);
   26931             :     return (__Pyx_RefNannyAPIStruct *)r;
   26932             : }
   26933             : #endif
   26934             : 
   26935             : /* PyErrExceptionMatches */
   26936             : #if CYTHON_FAST_THREAD_STATE
   26937           0 : static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
   26938           0 :     Py_ssize_t i, n;
   26939           0 :     n = PyTuple_GET_SIZE(tuple);
   26940             : #if PY_MAJOR_VERSION >= 3
   26941           0 :     for (i=0; i<n; i++) {
   26942           0 :         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
   26943             :     }
   26944             : #endif
   26945           0 :     for (i=0; i<n; i++) {
   26946           0 :         if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
   26947             :     }
   26948             :     return 0;
   26949             : }
   26950           3 : static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
   26951           3 :     int result;
   26952           3 :     PyObject *exc_type;
   26953             : #if PY_VERSION_HEX >= 0x030C00A6
   26954           3 :     PyObject *current_exception = tstate->current_exception;
   26955           3 :     if (unlikely(!current_exception)) return 0;
   26956           3 :     exc_type = (PyObject*) Py_TYPE(current_exception);
   26957           3 :     if (exc_type == err) return 1;
   26958             : #else
   26959             :     exc_type = tstate->curexc_type;
   26960             :     if (exc_type == err) return 1;
   26961             :     if (unlikely(!exc_type)) return 0;
   26962             : #endif
   26963             :     #if CYTHON_AVOID_BORROWED_REFS
   26964             :     Py_INCREF(exc_type);
   26965             :     #endif
   26966           0 :     if (unlikely(PyTuple_Check(err))) {
   26967           0 :         result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
   26968             :     } else {
   26969           0 :         result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
   26970             :     }
   26971             :     #if CYTHON_AVOID_BORROWED_REFS
   26972             :     Py_DECREF(exc_type);
   26973             :     #endif
   26974             :     return result;
   26975             : }
   26976             : #endif
   26977             : 
   26978             : /* PyErrFetchRestore */
   26979             : #if CYTHON_FAST_THREAD_STATE
   26980           3 : static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
   26981             : #if PY_VERSION_HEX >= 0x030C00A6
   26982           3 :     PyObject *tmp_value;
   26983           3 :     assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
   26984           3 :     if (value) {
   26985             :         #if CYTHON_COMPILING_IN_CPYTHON
   26986           0 :         if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
   26987             :         #endif
   26988           0 :             PyException_SetTraceback(value, tb);
   26989             :     }
   26990           3 :     tmp_value = tstate->current_exception;
   26991           3 :     tstate->current_exception = value;
   26992           3 :     Py_XDECREF(tmp_value);
   26993           3 :     Py_XDECREF(type);
   26994           3 :     Py_XDECREF(tb);
   26995             : #else
   26996             :     PyObject *tmp_type, *tmp_value, *tmp_tb;
   26997             :     tmp_type = tstate->curexc_type;
   26998             :     tmp_value = tstate->curexc_value;
   26999             :     tmp_tb = tstate->curexc_traceback;
   27000             :     tstate->curexc_type = type;
   27001             :     tstate->curexc_value = value;
   27002             :     tstate->curexc_traceback = tb;
   27003             :     Py_XDECREF(tmp_type);
   27004             :     Py_XDECREF(tmp_value);
   27005             :     Py_XDECREF(tmp_tb);
   27006             : #endif
   27007           3 : }
   27008           0 : static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
   27009             : #if PY_VERSION_HEX >= 0x030C00A6
   27010           0 :     PyObject* exc_value;
   27011           0 :     exc_value = tstate->current_exception;
   27012           0 :     tstate->current_exception = 0;
   27013           0 :     *value = exc_value;
   27014           0 :     *type = NULL;
   27015           0 :     *tb = NULL;
   27016           0 :     if (exc_value) {
   27017           0 :         *type = (PyObject*) Py_TYPE(exc_value);
   27018           0 :         Py_INCREF(*type);
   27019             :         #if CYTHON_COMPILING_IN_CPYTHON
   27020           0 :         *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
   27021           0 :         Py_XINCREF(*tb);
   27022             :         #else
   27023             :         *tb = PyException_GetTraceback(exc_value);
   27024             :         #endif
   27025             :     }
   27026             : #else
   27027             :     *type = tstate->curexc_type;
   27028             :     *value = tstate->curexc_value;
   27029             :     *tb = tstate->curexc_traceback;
   27030             :     tstate->curexc_type = 0;
   27031             :     tstate->curexc_value = 0;
   27032             :     tstate->curexc_traceback = 0;
   27033             : #endif
   27034           0 : }
   27035             : #endif
   27036             : 
   27037             : /* PyObjectGetAttrStr */
   27038             : #if CYTHON_USE_TYPE_SLOTS
   27039         590 : static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
   27040         590 :     PyTypeObject* tp = Py_TYPE(obj);
   27041         590 :     if (likely(tp->tp_getattro))
   27042         590 :         return tp->tp_getattro(obj, attr_name);
   27043             : #if PY_MAJOR_VERSION < 3
   27044             :     if (likely(tp->tp_getattr))
   27045             :         return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
   27046             : #endif
   27047           0 :     return PyObject_GetAttr(obj, attr_name);
   27048             : }
   27049             : #endif
   27050             : 
   27051             : /* PyObjectGetAttrStrNoError */
   27052             : #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
   27053           3 : static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
   27054           3 :     __Pyx_PyThreadState_declare
   27055           3 :     __Pyx_PyThreadState_assign
   27056           3 :     if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
   27057           3 :         __Pyx_PyErr_Clear();
   27058           3 : }
   27059             : #endif
   27060          26 : static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
   27061          26 :     PyObject *result;
   27062             : #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
   27063             :     (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
   27064             :     return result;
   27065             : #else
   27066             : #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
   27067          26 :     PyTypeObject* tp = Py_TYPE(obj);
   27068          26 :     if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
   27069           2 :         return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
   27070             :     }
   27071             : #endif
   27072          24 :     result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
   27073          24 :     if (unlikely(!result)) {
   27074           3 :         __Pyx_PyObject_GetAttrStr_ClearAttributeError();
   27075             :     }
   27076             :     return result;
   27077             : #endif
   27078             : }
   27079             : 
   27080             : /* GetBuiltinName */
   27081          12 : static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
   27082          12 :     PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
   27083          12 :     if (unlikely(!result) && !PyErr_Occurred()) {
   27084           0 :         PyErr_Format(PyExc_NameError,
   27085             : #if PY_MAJOR_VERSION >= 3
   27086             :             "name '%U' is not defined", name);
   27087             : #else
   27088             :             "name '%.200s' is not defined", PyString_AS_STRING(name));
   27089             : #endif
   27090             :     }
   27091          12 :     return result;
   27092             : }
   27093             : 
   27094             : /* TupleAndListFromArray */
   27095             : #if CYTHON_COMPILING_IN_CPYTHON
   27096             : static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
   27097             :     PyObject *v;
   27098             :     Py_ssize_t i;
   27099             :     for (i = 0; i < length; i++) {
   27100             :         v = dest[i] = src[i];
   27101             :         Py_INCREF(v);
   27102             :     }
   27103             : }
   27104             : static CYTHON_INLINE PyObject *
   27105             : __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
   27106             : {
   27107             :     PyObject *res;
   27108             :     if (n <= 0) {
   27109             :         Py_INCREF(__pyx_empty_tuple);
   27110             :         return __pyx_empty_tuple;
   27111             :     }
   27112             :     res = PyTuple_New(n);
   27113             :     if (unlikely(res == NULL)) return NULL;
   27114             :     __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
   27115             :     return res;
   27116             : }
   27117             : static CYTHON_INLINE PyObject *
   27118             : __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
   27119             : {
   27120             :     PyObject *res;
   27121             :     if (n <= 0) {
   27122             :         return PyList_New(0);
   27123             :     }
   27124             :     res = PyList_New(n);
   27125             :     if (unlikely(res == NULL)) return NULL;
   27126             :     __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
   27127             :     return res;
   27128             : }
   27129             : #endif
   27130             : 
   27131             : /* BytesEquals */
   27132             : static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
   27133             : #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
   27134             :     return PyObject_RichCompareBool(s1, s2, equals);
   27135             : #else
   27136             :     if (s1 == s2) {
   27137             :         return (equals == Py_EQ);
   27138             :     } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
   27139             :         const char *ps1, *ps2;
   27140             :         Py_ssize_t length = PyBytes_GET_SIZE(s1);
   27141             :         if (length != PyBytes_GET_SIZE(s2))
   27142             :             return (equals == Py_NE);
   27143             :         ps1 = PyBytes_AS_STRING(s1);
   27144             :         ps2 = PyBytes_AS_STRING(s2);
   27145             :         if (ps1[0] != ps2[0]) {
   27146             :             return (equals == Py_NE);
   27147             :         } else if (length == 1) {
   27148             :             return (equals == Py_EQ);
   27149             :         } else {
   27150             :             int result;
   27151             : #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
   27152             :             Py_hash_t hash1, hash2;
   27153             :             hash1 = ((PyBytesObject*)s1)->ob_shash;
   27154             :             hash2 = ((PyBytesObject*)s2)->ob_shash;
   27155             :             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
   27156             :                 return (equals == Py_NE);
   27157             :             }
   27158             : #endif
   27159             :             result = memcmp(ps1, ps2, (size_t)length);
   27160             :             return (equals == Py_EQ) ? (result == 0) : (result != 0);
   27161             :         }
   27162             :     } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
   27163             :         return (equals == Py_NE);
   27164             :     } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
   27165             :         return (equals == Py_NE);
   27166             :     } else {
   27167             :         int result;
   27168             :         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
   27169             :         if (!py_result)
   27170             :             return -1;
   27171             :         result = __Pyx_PyObject_IsTrue(py_result);
   27172             :         Py_DECREF(py_result);
   27173             :         return result;
   27174             :     }
   27175             : #endif
   27176             : }
   27177             : 
   27178             : /* UnicodeEquals */
   27179           0 : static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
   27180             : #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
   27181             :     return PyObject_RichCompareBool(s1, s2, equals);
   27182             : #else
   27183             : #if PY_MAJOR_VERSION < 3
   27184             :     PyObject* owned_ref = NULL;
   27185             : #endif
   27186           0 :     int s1_is_unicode, s2_is_unicode;
   27187           0 :     if (s1 == s2) {
   27188           0 :         goto return_eq;
   27189             :     }
   27190           0 :     s1_is_unicode = PyUnicode_CheckExact(s1);
   27191           0 :     s2_is_unicode = PyUnicode_CheckExact(s2);
   27192             : #if PY_MAJOR_VERSION < 3
   27193             :     if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
   27194             :         owned_ref = PyUnicode_FromObject(s2);
   27195             :         if (unlikely(!owned_ref))
   27196             :             return -1;
   27197             :         s2 = owned_ref;
   27198             :         s2_is_unicode = 1;
   27199             :     } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
   27200             :         owned_ref = PyUnicode_FromObject(s1);
   27201             :         if (unlikely(!owned_ref))
   27202             :             return -1;
   27203             :         s1 = owned_ref;
   27204             :         s1_is_unicode = 1;
   27205             :     } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
   27206             :         return __Pyx_PyBytes_Equals(s1, s2, equals);
   27207             :     }
   27208             : #endif
   27209           0 :     if (s1_is_unicode & s2_is_unicode) {
   27210           0 :         Py_ssize_t length;
   27211           0 :         int kind;
   27212           0 :         void *data1, *data2;
   27213           0 :         if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
   27214             :             return -1;
   27215           0 :         length = __Pyx_PyUnicode_GET_LENGTH(s1);
   27216           0 :         if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
   27217           0 :             goto return_ne;
   27218             :         }
   27219             : #if CYTHON_USE_UNICODE_INTERNALS
   27220             :         {
   27221           0 :             Py_hash_t hash1, hash2;
   27222             :         #if CYTHON_PEP393_ENABLED
   27223           0 :             hash1 = ((PyASCIIObject*)s1)->hash;
   27224           0 :             hash2 = ((PyASCIIObject*)s2)->hash;
   27225             :         #else
   27226             :             hash1 = ((PyUnicodeObject*)s1)->hash;
   27227             :             hash2 = ((PyUnicodeObject*)s2)->hash;
   27228             :         #endif
   27229           0 :             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
   27230           0 :                 goto return_ne;
   27231             :             }
   27232             :         }
   27233             : #endif
   27234           0 :         kind = __Pyx_PyUnicode_KIND(s1);
   27235           0 :         if (kind != __Pyx_PyUnicode_KIND(s2)) {
   27236           0 :             goto return_ne;
   27237             :         }
   27238           0 :         data1 = __Pyx_PyUnicode_DATA(s1);
   27239           0 :         data2 = __Pyx_PyUnicode_DATA(s2);
   27240           0 :         if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
   27241           0 :             goto return_ne;
   27242           0 :         } else if (length == 1) {
   27243           0 :             goto return_eq;
   27244             :         } else {
   27245           0 :             int result = memcmp(data1, data2, (size_t)(length * kind));
   27246             :             #if PY_MAJOR_VERSION < 3
   27247             :             Py_XDECREF(owned_ref);
   27248             :             #endif
   27249           0 :             return (equals == Py_EQ) ? (result == 0) : (result != 0);
   27250             :         }
   27251           0 :     } else if ((s1 == Py_None) & s2_is_unicode) {
   27252           0 :         goto return_ne;
   27253           0 :     } else if ((s2 == Py_None) & s1_is_unicode) {
   27254           0 :         goto return_ne;
   27255             :     } else {
   27256           0 :         int result;
   27257           0 :         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
   27258             :         #if PY_MAJOR_VERSION < 3
   27259             :         Py_XDECREF(owned_ref);
   27260             :         #endif
   27261           0 :         if (!py_result)
   27262             :             return -1;
   27263           0 :         result = __Pyx_PyObject_IsTrue(py_result);
   27264           0 :         Py_DECREF(py_result);
   27265           0 :         return result;
   27266             :     }
   27267           0 : return_eq:
   27268             :     #if PY_MAJOR_VERSION < 3
   27269             :     Py_XDECREF(owned_ref);
   27270             :     #endif
   27271           0 :     return (equals == Py_EQ);
   27272           0 : return_ne:
   27273             :     #if PY_MAJOR_VERSION < 3
   27274             :     Py_XDECREF(owned_ref);
   27275             :     #endif
   27276           0 :     return (equals == Py_NE);
   27277             : #endif
   27278             : }
   27279             : 
   27280             : /* fastcall */
   27281             : #if CYTHON_METH_FASTCALL
   27282           0 : static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
   27283             : {
   27284           0 :     Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
   27285           0 :     for (i = 0; i < n; i++)
   27286             :     {
   27287           0 :         if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
   27288             :     }
   27289           0 :     for (i = 0; i < n; i++)
   27290             :     {
   27291           0 :         int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
   27292           0 :         if (unlikely(eq != 0)) {
   27293           0 :             if (unlikely(eq < 0)) return NULL;
   27294           0 :             return kwvalues[i];
   27295             :         }
   27296             :     }
   27297             :     return NULL;
   27298             : }
   27299             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
   27300             : CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
   27301             :     Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
   27302             :     PyObject *dict;
   27303             :     dict = PyDict_New();
   27304             :     if (unlikely(!dict))
   27305             :         return NULL;
   27306             :     for (i=0; i<nkwargs; i++) {
   27307             :         PyObject *key = PyTuple_GET_ITEM(kwnames, i);
   27308             :         if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
   27309             :             goto bad;
   27310             :     }
   27311             :     return dict;
   27312             : bad:
   27313             :     Py_DECREF(dict);
   27314             :     return NULL;
   27315             : }
   27316             : #endif
   27317             : #endif
   27318             : 
   27319             : /* RaiseArgTupleInvalid */
   27320           0 : static void __Pyx_RaiseArgtupleInvalid(
   27321             :     const char* func_name,
   27322             :     int exact,
   27323             :     Py_ssize_t num_min,
   27324             :     Py_ssize_t num_max,
   27325             :     Py_ssize_t num_found)
   27326             : {
   27327           0 :     Py_ssize_t num_expected;
   27328           0 :     const char *more_or_less;
   27329           0 :     if (num_found < num_min) {
   27330             :         num_expected = num_min;
   27331             :         more_or_less = "at least";
   27332             :     } else {
   27333           0 :         num_expected = num_max;
   27334           0 :         more_or_less = "at most";
   27335             :     }
   27336           0 :     if (exact) {
   27337           0 :         more_or_less = "exactly";
   27338             :     }
   27339           0 :     PyErr_Format(PyExc_TypeError,
   27340             :                  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
   27341             :                  func_name, more_or_less, num_expected,
   27342             :                  (num_expected == 1) ? "" : "s", num_found);
   27343           0 : }
   27344             : 
   27345             : /* RaiseDoubleKeywords */
   27346           0 : static void __Pyx_RaiseDoubleKeywordsError(
   27347             :     const char* func_name,
   27348             :     PyObject* kw_name)
   27349             : {
   27350           0 :     PyErr_Format(PyExc_TypeError,
   27351             :         #if PY_MAJOR_VERSION >= 3
   27352             :         "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
   27353             :         #else
   27354             :         "%s() got multiple values for keyword argument '%s'", func_name,
   27355             :         PyString_AsString(kw_name));
   27356             :         #endif
   27357             : }
   27358             : 
   27359             : /* ParseKeywords */
   27360           0 : static int __Pyx_ParseOptionalKeywords(
   27361             :     PyObject *kwds,
   27362             :     PyObject *const *kwvalues,
   27363             :     PyObject **argnames[],
   27364             :     PyObject *kwds2,
   27365             :     PyObject *values[],
   27366             :     Py_ssize_t num_pos_args,
   27367             :     const char* function_name)
   27368             : {
   27369           0 :     PyObject *key = 0, *value = 0;
   27370           0 :     Py_ssize_t pos = 0;
   27371           0 :     PyObject*** name;
   27372           0 :     PyObject*** first_kw_arg = argnames + num_pos_args;
   27373           0 :     int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
   27374           0 :     while (1) {
   27375           0 :         Py_XDECREF(key); key = NULL;
   27376           0 :         Py_XDECREF(value); value = NULL;
   27377           0 :         if (kwds_is_tuple) {
   27378           0 :             Py_ssize_t size;
   27379             : #if CYTHON_ASSUME_SAFE_MACROS
   27380           0 :             size = PyTuple_GET_SIZE(kwds);
   27381             : #else
   27382             :             size = PyTuple_Size(kwds);
   27383             :             if (size < 0) goto bad;
   27384             : #endif
   27385           0 :             if (pos >= size) break;
   27386             : #if CYTHON_AVOID_BORROWED_REFS
   27387             :             key = __Pyx_PySequence_ITEM(kwds, pos);
   27388             :             if (!key) goto bad;
   27389             : #elif CYTHON_ASSUME_SAFE_MACROS
   27390           0 :             key = PyTuple_GET_ITEM(kwds, pos);
   27391             : #else
   27392             :             key = PyTuple_GetItem(kwds, pos);
   27393             :             if (!key) goto bad;
   27394             : #endif
   27395           0 :             value = kwvalues[pos];
   27396           0 :             pos++;
   27397             :         }
   27398             :         else
   27399             :         {
   27400           0 :             if (!PyDict_Next(kwds, &pos, &key, &value)) break;
   27401             : #if CYTHON_AVOID_BORROWED_REFS
   27402             :             Py_INCREF(key);
   27403             : #endif
   27404             :         }
   27405           0 :         name = first_kw_arg;
   27406           0 :         while (*name && (**name != key)) name++;
   27407           0 :         if (*name) {
   27408           0 :             values[name-argnames] = value;
   27409             : #if CYTHON_AVOID_BORROWED_REFS
   27410             :             Py_INCREF(value);
   27411             :             Py_DECREF(key);
   27412             : #endif
   27413           0 :             key = NULL;
   27414           0 :             value = NULL;
   27415           0 :             continue;
   27416             :         }
   27417             : #if !CYTHON_AVOID_BORROWED_REFS
   27418           0 :         Py_INCREF(key);
   27419             : #endif
   27420           0 :         Py_INCREF(value);
   27421           0 :         name = first_kw_arg;
   27422             :         #if PY_MAJOR_VERSION < 3
   27423             :         if (likely(PyString_Check(key))) {
   27424             :             while (*name) {
   27425             :                 if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
   27426             :                         && _PyString_Eq(**name, key)) {
   27427             :                     values[name-argnames] = value;
   27428             : #if CYTHON_AVOID_BORROWED_REFS
   27429             :                     value = NULL;
   27430             : #endif
   27431             :                     break;
   27432             :                 }
   27433             :                 name++;
   27434             :             }
   27435             :             if (*name) continue;
   27436             :             else {
   27437             :                 PyObject*** argname = argnames;
   27438             :                 while (argname != first_kw_arg) {
   27439             :                     if ((**argname == key) || (
   27440             :                             (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
   27441             :                              && _PyString_Eq(**argname, key))) {
   27442             :                         goto arg_passed_twice;
   27443             :                     }
   27444             :                     argname++;
   27445             :                 }
   27446             :             }
   27447             :         } else
   27448             :         #endif
   27449           0 :         if (likely(PyUnicode_Check(key))) {
   27450           0 :             while (*name) {
   27451           0 :                 int cmp = (
   27452             :                 #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
   27453           0 :                     (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
   27454             :                 #endif
   27455           0 :                     PyUnicode_Compare(**name, key)
   27456             :                 );
   27457           0 :                 if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
   27458           0 :                 if (cmp == 0) {
   27459           0 :                     values[name-argnames] = value;
   27460             : #if CYTHON_AVOID_BORROWED_REFS
   27461             :                     value = NULL;
   27462             : #endif
   27463           0 :                     break;
   27464             :                 }
   27465           0 :                 name++;
   27466             :             }
   27467           0 :             if (*name) continue;
   27468             :             else {
   27469             :                 PyObject*** argname = argnames;
   27470           0 :                 while (argname != first_kw_arg) {
   27471           0 :                     int cmp = (**argname == key) ? 0 :
   27472             :                     #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
   27473           0 :                         (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
   27474             :                     #endif
   27475           0 :                         PyUnicode_Compare(**argname, key);
   27476           0 :                     if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
   27477           0 :                     if (cmp == 0) goto arg_passed_twice;
   27478           0 :                     argname++;
   27479             :                 }
   27480             :             }
   27481             :         } else
   27482           0 :             goto invalid_keyword_type;
   27483           0 :         if (kwds2) {
   27484           0 :             if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
   27485             :         } else {
   27486           0 :             goto invalid_keyword;
   27487             :         }
   27488             :     }
   27489           0 :     Py_XDECREF(key);
   27490           0 :     Py_XDECREF(value);
   27491           0 :     return 0;
   27492           0 : arg_passed_twice:
   27493           0 :     __Pyx_RaiseDoubleKeywordsError(function_name, key);
   27494           0 :     goto bad;
   27495           0 : invalid_keyword_type:
   27496           0 :     PyErr_Format(PyExc_TypeError,
   27497             :         "%.200s() keywords must be strings", function_name);
   27498           0 :     goto bad;
   27499           0 : invalid_keyword:
   27500             :     #if PY_MAJOR_VERSION < 3
   27501             :     PyErr_Format(PyExc_TypeError,
   27502             :         "%.200s() got an unexpected keyword argument '%.200s'",
   27503             :         function_name, PyString_AsString(key));
   27504             :     #else
   27505           0 :     PyErr_Format(PyExc_TypeError,
   27506             :         "%s() got an unexpected keyword argument '%U'",
   27507             :         function_name, key);
   27508             :     #endif
   27509           0 : bad:
   27510           0 :     Py_XDECREF(key);
   27511           0 :     Py_XDECREF(value);
   27512           0 :     return -1;
   27513             : }
   27514             : 
   27515             : /* ArgTypeTest */
   27516           0 : static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
   27517             : {
   27518           0 :     __Pyx_TypeName type_name;
   27519           0 :     __Pyx_TypeName obj_type_name;
   27520           0 :     if (unlikely(!type)) {
   27521           0 :         PyErr_SetString(PyExc_SystemError, "Missing type object");
   27522           0 :         return 0;
   27523             :     }
   27524           0 :     else if (exact) {
   27525             :         #if PY_MAJOR_VERSION == 2
   27526             :         if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
   27527             :         #endif
   27528             :     }
   27529             :     else {
   27530           0 :         if (likely(__Pyx_TypeCheck(obj, type))) return 1;
   27531             :     }
   27532           0 :     type_name = __Pyx_PyType_GetName(type);
   27533           0 :     obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
   27534           0 :     PyErr_Format(PyExc_TypeError,
   27535             :         "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
   27536             :         ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name);
   27537           0 :     __Pyx_DECREF_TypeName(type_name);
   27538           0 :     __Pyx_DECREF_TypeName(obj_type_name);
   27539           0 :     return 0;
   27540             : }
   27541             : 
   27542             : /* RaiseException */
   27543             : #if PY_MAJOR_VERSION < 3
   27544             : static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
   27545             :     __Pyx_PyThreadState_declare
   27546             :     CYTHON_UNUSED_VAR(cause);
   27547             :     Py_XINCREF(type);
   27548             :     if (!value || value == Py_None)
   27549             :         value = NULL;
   27550             :     else
   27551             :         Py_INCREF(value);
   27552             :     if (!tb || tb == Py_None)
   27553             :         tb = NULL;
   27554             :     else {
   27555             :         Py_INCREF(tb);
   27556             :         if (!PyTraceBack_Check(tb)) {
   27557             :             PyErr_SetString(PyExc_TypeError,
   27558             :                 "raise: arg 3 must be a traceback or None");
   27559             :             goto raise_error;
   27560             :         }
   27561             :     }
   27562             :     if (PyType_Check(type)) {
   27563             : #if CYTHON_COMPILING_IN_PYPY
   27564             :         if (!value) {
   27565             :             Py_INCREF(Py_None);
   27566             :             value = Py_None;
   27567             :         }
   27568             : #endif
   27569             :         PyErr_NormalizeException(&type, &value, &tb);
   27570             :     } else {
   27571             :         if (value) {
   27572             :             PyErr_SetString(PyExc_TypeError,
   27573             :                 "instance exception may not have a separate value");
   27574             :             goto raise_error;
   27575             :         }
   27576             :         value = type;
   27577             :         type = (PyObject*) Py_TYPE(type);
   27578             :         Py_INCREF(type);
   27579             :         if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
   27580             :             PyErr_SetString(PyExc_TypeError,
   27581             :                 "raise: exception class must be a subclass of BaseException");
   27582             :             goto raise_error;
   27583             :         }
   27584             :     }
   27585             :     __Pyx_PyThreadState_assign
   27586             :     __Pyx_ErrRestore(type, value, tb);
   27587             :     return;
   27588             : raise_error:
   27589             :     Py_XDECREF(value);
   27590             :     Py_XDECREF(type);
   27591             :     Py_XDECREF(tb);
   27592             :     return;
   27593             : }
   27594             : #else
   27595           0 : static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
   27596           0 :     PyObject* owned_instance = NULL;
   27597           0 :     if (tb == Py_None) {
   27598             :         tb = 0;
   27599           0 :     } else if (tb && !PyTraceBack_Check(tb)) {
   27600           0 :         PyErr_SetString(PyExc_TypeError,
   27601             :             "raise: arg 3 must be a traceback or None");
   27602           0 :         goto bad;
   27603             :     }
   27604           0 :     if (value == Py_None)
   27605           0 :         value = 0;
   27606           0 :     if (PyExceptionInstance_Check(type)) {
   27607           0 :         if (value) {
   27608           0 :             PyErr_SetString(PyExc_TypeError,
   27609             :                 "instance exception may not have a separate value");
   27610           0 :             goto bad;
   27611             :         }
   27612             :         value = type;
   27613             :         type = (PyObject*) Py_TYPE(value);
   27614           0 :     } else if (PyExceptionClass_Check(type)) {
   27615           0 :         PyObject *instance_class = NULL;
   27616           0 :         if (value && PyExceptionInstance_Check(value)) {
   27617           0 :             instance_class = (PyObject*) Py_TYPE(value);
   27618           0 :             if (instance_class != type) {
   27619           0 :                 int is_subclass = PyObject_IsSubclass(instance_class, type);
   27620           0 :                 if (!is_subclass) {
   27621             :                     instance_class = NULL;
   27622           0 :                 } else if (unlikely(is_subclass == -1)) {
   27623           0 :                     goto bad;
   27624             :                 } else {
   27625             :                     type = instance_class;
   27626             :                 }
   27627             :             }
   27628             :         }
   27629             :         if (!instance_class) {
   27630           0 :             PyObject *args;
   27631           0 :             if (!value)
   27632           0 :                 args = PyTuple_New(0);
   27633           0 :             else if (PyTuple_Check(value)) {
   27634           0 :                 Py_INCREF(value);
   27635           0 :                 args = value;
   27636             :             } else
   27637           0 :                 args = PyTuple_Pack(1, value);
   27638           0 :             if (!args)
   27639           0 :                 goto bad;
   27640           0 :             owned_instance = PyObject_Call(type, args, NULL);
   27641           0 :             Py_DECREF(args);
   27642           0 :             if (!owned_instance)
   27643           0 :                 goto bad;
   27644           0 :             value = owned_instance;
   27645           0 :             if (!PyExceptionInstance_Check(value)) {
   27646           0 :                 PyErr_Format(PyExc_TypeError,
   27647             :                              "calling %R should have returned an instance of "
   27648             :                              "BaseException, not %R",
   27649             :                              type, Py_TYPE(value));
   27650           0 :                 goto bad;
   27651             :             }
   27652             :         }
   27653             :     } else {
   27654           0 :         PyErr_SetString(PyExc_TypeError,
   27655             :             "raise: exception class must be a subclass of BaseException");
   27656           0 :         goto bad;
   27657             :     }
   27658           0 :     if (cause) {
   27659           0 :         PyObject *fixed_cause;
   27660           0 :         if (cause == Py_None) {
   27661             :             fixed_cause = NULL;
   27662           0 :         } else if (PyExceptionClass_Check(cause)) {
   27663           0 :             fixed_cause = PyObject_CallObject(cause, NULL);
   27664           0 :             if (fixed_cause == NULL)
   27665           0 :                 goto bad;
   27666           0 :         } else if (PyExceptionInstance_Check(cause)) {
   27667           0 :             fixed_cause = cause;
   27668           0 :             Py_INCREF(fixed_cause);
   27669             :         } else {
   27670           0 :             PyErr_SetString(PyExc_TypeError,
   27671             :                             "exception causes must derive from "
   27672             :                             "BaseException");
   27673           0 :             goto bad;
   27674             :         }
   27675           0 :         PyException_SetCause(value, fixed_cause);
   27676             :     }
   27677           0 :     PyErr_SetObject(type, value);
   27678           0 :     if (tb) {
   27679             :       #if PY_VERSION_HEX >= 0x030C00A6
   27680           0 :         PyException_SetTraceback(value, tb);
   27681             :       #elif CYTHON_FAST_THREAD_STATE
   27682             :         PyThreadState *tstate = __Pyx_PyThreadState_Current;
   27683             :         PyObject* tmp_tb = tstate->curexc_traceback;
   27684             :         if (tb != tmp_tb) {
   27685             :             Py_INCREF(tb);
   27686             :             tstate->curexc_traceback = tb;
   27687             :             Py_XDECREF(tmp_tb);
   27688             :         }
   27689             : #else
   27690             :         PyObject *tmp_type, *tmp_value, *tmp_tb;
   27691             :         PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
   27692             :         Py_INCREF(tb);
   27693             :         PyErr_Restore(tmp_type, tmp_value, tb);
   27694             :         Py_XDECREF(tmp_tb);
   27695             : #endif
   27696             :     }
   27697           0 : bad:
   27698           0 :     Py_XDECREF(owned_instance);
   27699           0 :     return;
   27700             : }
   27701             : #endif
   27702             : 
   27703             : /* PyFunctionFastCall */
   27704             : #if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
   27705             : static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
   27706             :                                                PyObject *globals) {
   27707             :     PyFrameObject *f;
   27708             :     PyThreadState *tstate = __Pyx_PyThreadState_Current;
   27709             :     PyObject **fastlocals;
   27710             :     Py_ssize_t i;
   27711             :     PyObject *result;
   27712             :     assert(globals != NULL);
   27713             :     /* XXX Perhaps we should create a specialized
   27714             :        PyFrame_New() that doesn't take locals, but does
   27715             :        take builtins without sanity checking them.
   27716             :        */
   27717             :     assert(tstate != NULL);
   27718             :     f = PyFrame_New(tstate, co, globals, NULL);
   27719             :     if (f == NULL) {
   27720             :         return NULL;
   27721             :     }
   27722             :     fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
   27723             :     for (i = 0; i < na; i++) {
   27724             :         Py_INCREF(*args);
   27725             :         fastlocals[i] = *args++;
   27726             :     }
   27727             :     result = PyEval_EvalFrameEx(f,0);
   27728             :     ++tstate->recursion_depth;
   27729             :     Py_DECREF(f);
   27730             :     --tstate->recursion_depth;
   27731             :     return result;
   27732             : }
   27733             : static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
   27734             :     PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
   27735             :     PyObject *globals = PyFunction_GET_GLOBALS(func);
   27736             :     PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
   27737             :     PyObject *closure;
   27738             : #if PY_MAJOR_VERSION >= 3
   27739             :     PyObject *kwdefs;
   27740             : #endif
   27741             :     PyObject *kwtuple, **k;
   27742             :     PyObject **d;
   27743             :     Py_ssize_t nd;
   27744             :     Py_ssize_t nk;
   27745             :     PyObject *result;
   27746             :     assert(kwargs == NULL || PyDict_Check(kwargs));
   27747             :     nk = kwargs ? PyDict_Size(kwargs) : 0;
   27748             :     #if PY_MAJOR_VERSION < 3
   27749             :     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
   27750             :         return NULL;
   27751             :     }
   27752             :     #else
   27753             :     if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
   27754             :         return NULL;
   27755             :     }
   27756             :     #endif
   27757             :     if (
   27758             : #if PY_MAJOR_VERSION >= 3
   27759             :             co->co_kwonlyargcount == 0 &&
   27760             : #endif
   27761             :             likely(kwargs == NULL || nk == 0) &&
   27762             :             co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
   27763             :         if (argdefs == NULL && co->co_argcount == nargs) {
   27764             :             result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
   27765             :             goto done;
   27766             :         }
   27767             :         else if (nargs == 0 && argdefs != NULL
   27768             :                  && co->co_argcount == Py_SIZE(argdefs)) {
   27769             :             /* function called with no arguments, but all parameters have
   27770             :                a default value: use default values as arguments .*/
   27771             :             args = &PyTuple_GET_ITEM(argdefs, 0);
   27772             :             result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
   27773             :             goto done;
   27774             :         }
   27775             :     }
   27776             :     if (kwargs != NULL) {
   27777             :         Py_ssize_t pos, i;
   27778             :         kwtuple = PyTuple_New(2 * nk);
   27779             :         if (kwtuple == NULL) {
   27780             :             result = NULL;
   27781             :             goto done;
   27782             :         }
   27783             :         k = &PyTuple_GET_ITEM(kwtuple, 0);
   27784             :         pos = i = 0;
   27785             :         while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
   27786             :             Py_INCREF(k[i]);
   27787             :             Py_INCREF(k[i+1]);
   27788             :             i += 2;
   27789             :         }
   27790             :         nk = i / 2;
   27791             :     }
   27792             :     else {
   27793             :         kwtuple = NULL;
   27794             :         k = NULL;
   27795             :     }
   27796             :     closure = PyFunction_GET_CLOSURE(func);
   27797             : #if PY_MAJOR_VERSION >= 3
   27798             :     kwdefs = PyFunction_GET_KW_DEFAULTS(func);
   27799             : #endif
   27800             :     if (argdefs != NULL) {
   27801             :         d = &PyTuple_GET_ITEM(argdefs, 0);
   27802             :         nd = Py_SIZE(argdefs);
   27803             :     }
   27804             :     else {
   27805             :         d = NULL;
   27806             :         nd = 0;
   27807             :     }
   27808             : #if PY_MAJOR_VERSION >= 3
   27809             :     result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
   27810             :                                args, (int)nargs,
   27811             :                                k, (int)nk,
   27812             :                                d, (int)nd, kwdefs, closure);
   27813             : #else
   27814             :     result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
   27815             :                                args, (int)nargs,
   27816             :                                k, (int)nk,
   27817             :                                d, (int)nd, closure);
   27818             : #endif
   27819             :     Py_XDECREF(kwtuple);
   27820             : done:
   27821             :     Py_LeaveRecursiveCall();
   27822             :     return result;
   27823             : }
   27824             : #endif
   27825             : 
   27826             : /* PyObjectCall */
   27827             : #if CYTHON_COMPILING_IN_CPYTHON
   27828         412 : static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
   27829         412 :     PyObject *result;
   27830         412 :     ternaryfunc call = Py_TYPE(func)->tp_call;
   27831         412 :     if (unlikely(!call))
   27832           0 :         return PyObject_Call(func, arg, kw);
   27833             :     #if PY_MAJOR_VERSION < 3
   27834             :     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
   27835             :         return NULL;
   27836             :     #else
   27837         412 :     if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
   27838             :         return NULL;
   27839             :     #endif
   27840         412 :     result = (*call)(func, arg, kw);
   27841         412 :     Py_LeaveRecursiveCall();
   27842         412 :     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
   27843           0 :         PyErr_SetString(
   27844             :             PyExc_SystemError,
   27845             :             "NULL result without error in PyObject_Call");
   27846             :     }
   27847             :     return result;
   27848             : }
   27849             : #endif
   27850             : 
   27851             : /* PyObjectCallMethO */
   27852             : #if CYTHON_COMPILING_IN_CPYTHON
   27853           0 : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
   27854           0 :     PyObject *self, *result;
   27855           0 :     PyCFunction cfunc;
   27856           0 :     cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
   27857           0 :     self = __Pyx_CyOrPyCFunction_GET_SELF(func);
   27858             :     #if PY_MAJOR_VERSION < 3
   27859             :     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
   27860             :         return NULL;
   27861             :     #else
   27862           0 :     if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
   27863             :         return NULL;
   27864             :     #endif
   27865           0 :     result = cfunc(self, arg);
   27866           0 :     Py_LeaveRecursiveCall();
   27867           0 :     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
   27868           0 :         PyErr_SetString(
   27869             :             PyExc_SystemError,
   27870             :             "NULL result without error in PyObject_Call");
   27871             :     }
   27872             :     return result;
   27873             : }
   27874             : #endif
   27875             : 
   27876             : /* PyObjectFastCall */
   27877             : #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
   27878             : static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
   27879             :     PyObject *argstuple;
   27880             :     PyObject *result = 0;
   27881             :     size_t i;
   27882             :     argstuple = PyTuple_New((Py_ssize_t)nargs);
   27883             :     if (unlikely(!argstuple)) return NULL;
   27884             :     for (i = 0; i < nargs; i++) {
   27885             :         Py_INCREF(args[i]);
   27886             :         if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
   27887             :     }
   27888             :     result = __Pyx_PyObject_Call(func, argstuple, kwargs);
   27889             :   bad:
   27890             :     Py_DECREF(argstuple);
   27891             :     return result;
   27892             : }
   27893             : #endif
   27894          17 : static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
   27895          17 :     Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
   27896             : #if CYTHON_COMPILING_IN_CPYTHON
   27897          17 :     if (nargs == 0 && kwargs == NULL) {
   27898           0 :         if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
   27899           0 :             return __Pyx_PyObject_CallMethO(func, NULL);
   27900             :     }
   27901          17 :     else if (nargs == 1 && kwargs == NULL) {
   27902          16 :         if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
   27903           0 :             return __Pyx_PyObject_CallMethO(func, args[0]);
   27904             :     }
   27905             : #endif
   27906             :     #if PY_VERSION_HEX < 0x030800B1
   27907             :     #if CYTHON_FAST_PYCCALL
   27908             :     if (PyCFunction_Check(func)) {
   27909             :         if (kwargs) {
   27910             :             return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
   27911             :         } else {
   27912             :             return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
   27913             :         }
   27914             :     }
   27915             :     #if PY_VERSION_HEX >= 0x030700A1
   27916             :     if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
   27917             :         return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
   27918             :     }
   27919             :     #endif
   27920             :     #endif
   27921             :     #if CYTHON_FAST_PYCALL
   27922             :     if (PyFunction_Check(func)) {
   27923             :         return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
   27924             :     }
   27925             :     #endif
   27926             :     #endif
   27927          17 :     if (kwargs == NULL) {
   27928             :         #if CYTHON_VECTORCALL
   27929             :         #if PY_VERSION_HEX < 0x03090000
   27930             :         vectorcallfunc f = _PyVectorcall_Function(func);
   27931             :         #else
   27932          17 :         vectorcallfunc f = PyVectorcall_Function(func);
   27933             :         #endif
   27934          17 :         if (f) {
   27935          17 :             return f(func, args, (size_t)nargs, NULL);
   27936             :         }
   27937             :         #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
   27938             :         if (__Pyx_CyFunction_CheckExact(func)) {
   27939             :             __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
   27940             :             if (f) return f(func, args, (size_t)nargs, NULL);
   27941             :         }
   27942             :         #endif
   27943             :     }
   27944           0 :     if (nargs == 0) {
   27945           0 :         return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
   27946             :     }
   27947             :     #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
   27948           0 :     return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
   27949             :     #else
   27950             :     return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
   27951             :     #endif
   27952             : }
   27953             : 
   27954             : /* RaiseUnexpectedTypeError */
   27955             : static int
   27956           0 : __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
   27957             : {
   27958           0 :     __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
   27959           0 :     PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME,
   27960             :                  expected, obj_type_name);
   27961           0 :     __Pyx_DECREF_TypeName(obj_type_name);
   27962           0 :     return 0;
   27963             : }
   27964             : 
   27965             : /* CIntToDigits */
   27966             : static const char DIGIT_PAIRS_10[2*10*10+1] = {
   27967             :     "00010203040506070809"
   27968             :     "10111213141516171819"
   27969             :     "20212223242526272829"
   27970             :     "30313233343536373839"
   27971             :     "40414243444546474849"
   27972             :     "50515253545556575859"
   27973             :     "60616263646566676869"
   27974             :     "70717273747576777879"
   27975             :     "80818283848586878889"
   27976             :     "90919293949596979899"
   27977             : };
   27978             : static const char DIGIT_PAIRS_8[2*8*8+1] = {
   27979             :     "0001020304050607"
   27980             :     "1011121314151617"
   27981             :     "2021222324252627"
   27982             :     "3031323334353637"
   27983             :     "4041424344454647"
   27984             :     "5051525354555657"
   27985             :     "6061626364656667"
   27986             :     "7071727374757677"
   27987             : };
   27988             : static const char DIGITS_HEX[2*16+1] = {
   27989             :     "0123456789abcdef"
   27990             :     "0123456789ABCDEF"
   27991             : };
   27992             : 
   27993             : /* BuildPyUnicode */
   27994           0 : static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
   27995             :                                                 int prepend_sign, char padding_char) {
   27996           0 :     PyObject *uval;
   27997           0 :     Py_ssize_t uoffset = ulength - clength;
   27998             : #if CYTHON_USE_UNICODE_INTERNALS
   27999           0 :     Py_ssize_t i;
   28000             : #if CYTHON_PEP393_ENABLED
   28001           0 :     void *udata;
   28002           0 :     uval = PyUnicode_New(ulength, 127);
   28003           0 :     if (unlikely(!uval)) return NULL;
   28004           0 :     udata = PyUnicode_DATA(uval);
   28005             : #else
   28006             :     Py_UNICODE *udata;
   28007             :     uval = PyUnicode_FromUnicode(NULL, ulength);
   28008             :     if (unlikely(!uval)) return NULL;
   28009             :     udata = PyUnicode_AS_UNICODE(uval);
   28010             : #endif
   28011           0 :     if (uoffset > 0) {
   28012           0 :         i = 0;
   28013           0 :         if (prepend_sign) {
   28014           0 :             __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
   28015           0 :             i++;
   28016             :         }
   28017           0 :         for (; i < uoffset; i++) {
   28018           0 :             __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
   28019             :         }
   28020             :     }
   28021           0 :     for (i=0; i < clength; i++) {
   28022           0 :         __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
   28023             :     }
   28024             : #else
   28025             :     {
   28026             :         PyObject *sign = NULL, *padding = NULL;
   28027             :         uval = NULL;
   28028             :         if (uoffset > 0) {
   28029             :             prepend_sign = !!prepend_sign;
   28030             :             if (uoffset > prepend_sign) {
   28031             :                 padding = PyUnicode_FromOrdinal(padding_char);
   28032             :                 if (likely(padding) && uoffset > prepend_sign + 1) {
   28033             :                     PyObject *tmp;
   28034             :                     PyObject *repeat = PyInt_FromSsize_t(uoffset - prepend_sign);
   28035             :                     if (unlikely(!repeat)) goto done_or_error;
   28036             :                     tmp = PyNumber_Multiply(padding, repeat);
   28037             :                     Py_DECREF(repeat);
   28038             :                     Py_DECREF(padding);
   28039             :                     padding = tmp;
   28040             :                 }
   28041             :                 if (unlikely(!padding)) goto done_or_error;
   28042             :             }
   28043             :             if (prepend_sign) {
   28044             :                 sign = PyUnicode_FromOrdinal('-');
   28045             :                 if (unlikely(!sign)) goto done_or_error;
   28046             :             }
   28047             :         }
   28048             :         uval = PyUnicode_DecodeASCII(chars, clength, NULL);
   28049             :         if (likely(uval) && padding) {
   28050             :             PyObject *tmp = PyNumber_Add(padding, uval);
   28051             :             Py_DECREF(uval);
   28052             :             uval = tmp;
   28053             :         }
   28054             :         if (likely(uval) && sign) {
   28055             :             PyObject *tmp = PyNumber_Add(sign, uval);
   28056             :             Py_DECREF(uval);
   28057             :             uval = tmp;
   28058             :         }
   28059             : done_or_error:
   28060             :         Py_XDECREF(padding);
   28061             :         Py_XDECREF(sign);
   28062             :     }
   28063             : #endif
   28064             :     return uval;
   28065             : }
   28066             : 
   28067             : /* CIntToPyUnicode */
   28068           0 : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) {
   28069           0 :     char digits[sizeof(int)*3+2];
   28070           0 :     char *dpos, *end = digits + sizeof(int)*3+2;
   28071           0 :     const char *hex_digits = DIGITS_HEX;
   28072           0 :     Py_ssize_t length, ulength;
   28073           0 :     int prepend_sign, last_one_off;
   28074           0 :     int remaining;
   28075             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   28076             : #pragma GCC diagnostic push
   28077             : #pragma GCC diagnostic ignored "-Wconversion"
   28078             : #endif
   28079           0 :     const int neg_one = (int) -1, const_zero = (int) 0;
   28080             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   28081             : #pragma GCC diagnostic pop
   28082             : #endif
   28083           0 :     const int is_unsigned = neg_one > const_zero;
   28084           0 :     if (format_char == 'X') {
   28085           0 :         hex_digits += 16;
   28086           0 :         format_char = 'x';
   28087             :     }
   28088           0 :     remaining = value;
   28089           0 :     last_one_off = 0;
   28090           0 :     dpos = end;
   28091           0 :     do {
   28092           0 :         int digit_pos;
   28093           0 :         switch (format_char) {
   28094           0 :         case 'o':
   28095           0 :             digit_pos = abs((int)(remaining % (8*8)));
   28096           0 :             remaining = (int) (remaining / (8*8));
   28097           0 :             dpos -= 2;
   28098           0 :             memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
   28099           0 :             last_one_off = (digit_pos < 8);
   28100           0 :             break;
   28101           0 :         case 'd':
   28102           0 :             digit_pos = abs((int)(remaining % (10*10)));
   28103           0 :             remaining = (int) (remaining / (10*10));
   28104           0 :             dpos -= 2;
   28105           0 :             memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
   28106           0 :             last_one_off = (digit_pos < 10);
   28107           0 :             break;
   28108           0 :         case 'x':
   28109           0 :             *(--dpos) = hex_digits[abs((int)(remaining % 16))];
   28110           0 :             remaining = (int) (remaining / 16);
   28111           0 :             break;
   28112             :         default:
   28113             :             assert(0);
   28114             :             break;
   28115             :         }
   28116           0 :     } while (unlikely(remaining != 0));
   28117           0 :     assert(!last_one_off || *dpos == '0');
   28118           0 :     dpos += last_one_off;
   28119           0 :     length = end - dpos;
   28120           0 :     ulength = length;
   28121           0 :     prepend_sign = 0;
   28122           0 :     if (!is_unsigned && value <= neg_one) {
   28123           0 :         if (padding_char == ' ' || width <= length + 1) {
   28124           0 :             *(--dpos) = '-';
   28125           0 :             ++length;
   28126             :         } else {
   28127             :             prepend_sign = 1;
   28128             :         }
   28129           0 :         ++ulength;
   28130             :     }
   28131           0 :     if (width > ulength) {
   28132             :         ulength = width;
   28133             :     }
   28134           0 :     if (ulength == 1) {
   28135           0 :         return PyUnicode_FromOrdinal(*dpos);
   28136             :     }
   28137           0 :     return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
   28138             : }
   28139             : 
   28140             : /* CIntToPyUnicode */
   28141           0 : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) {
   28142           0 :     char digits[sizeof(Py_ssize_t)*3+2];
   28143           0 :     char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
   28144           0 :     const char *hex_digits = DIGITS_HEX;
   28145           0 :     Py_ssize_t length, ulength;
   28146           0 :     int prepend_sign, last_one_off;
   28147           0 :     Py_ssize_t remaining;
   28148             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   28149             : #pragma GCC diagnostic push
   28150             : #pragma GCC diagnostic ignored "-Wconversion"
   28151             : #endif
   28152           0 :     const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
   28153             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   28154             : #pragma GCC diagnostic pop
   28155             : #endif
   28156           0 :     const int is_unsigned = neg_one > const_zero;
   28157           0 :     if (format_char == 'X') {
   28158           0 :         hex_digits += 16;
   28159           0 :         format_char = 'x';
   28160             :     }
   28161           0 :     remaining = value;
   28162           0 :     last_one_off = 0;
   28163           0 :     dpos = end;
   28164           0 :     do {
   28165           0 :         int digit_pos;
   28166           0 :         switch (format_char) {
   28167           0 :         case 'o':
   28168           0 :             digit_pos = abs((int)(remaining % (8*8)));
   28169           0 :             remaining = (Py_ssize_t) (remaining / (8*8));
   28170           0 :             dpos -= 2;
   28171           0 :             memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
   28172           0 :             last_one_off = (digit_pos < 8);
   28173           0 :             break;
   28174           0 :         case 'd':
   28175           0 :             digit_pos = abs((int)(remaining % (10*10)));
   28176           0 :             remaining = (Py_ssize_t) (remaining / (10*10));
   28177           0 :             dpos -= 2;
   28178           0 :             memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
   28179           0 :             last_one_off = (digit_pos < 10);
   28180           0 :             break;
   28181           0 :         case 'x':
   28182           0 :             *(--dpos) = hex_digits[abs((int)(remaining % 16))];
   28183           0 :             remaining = (Py_ssize_t) (remaining / 16);
   28184           0 :             break;
   28185             :         default:
   28186             :             assert(0);
   28187             :             break;
   28188             :         }
   28189           0 :     } while (unlikely(remaining != 0));
   28190           0 :     assert(!last_one_off || *dpos == '0');
   28191           0 :     dpos += last_one_off;
   28192           0 :     length = end - dpos;
   28193           0 :     ulength = length;
   28194           0 :     prepend_sign = 0;
   28195           0 :     if (!is_unsigned && value <= neg_one) {
   28196           0 :         if (padding_char == ' ' || width <= length + 1) {
   28197           0 :             *(--dpos) = '-';
   28198           0 :             ++length;
   28199             :         } else {
   28200             :             prepend_sign = 1;
   28201             :         }
   28202           0 :         ++ulength;
   28203             :     }
   28204           0 :     if (width > ulength) {
   28205             :         ulength = width;
   28206             :     }
   28207           0 :     if (ulength == 1) {
   28208           0 :         return PyUnicode_FromOrdinal(*dpos);
   28209             :     }
   28210           0 :     return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
   28211             : }
   28212             : 
   28213             : /* JoinPyUnicode */
   28214           0 : static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
   28215             :                                       Py_UCS4 max_char) {
   28216             : #if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   28217           0 :     PyObject *result_uval;
   28218           0 :     int result_ukind, kind_shift;
   28219           0 :     Py_ssize_t i, char_pos;
   28220           0 :     void *result_udata;
   28221           0 :     CYTHON_MAYBE_UNUSED_VAR(max_char);
   28222             : #if CYTHON_PEP393_ENABLED
   28223           0 :     result_uval = PyUnicode_New(result_ulength, max_char);
   28224           0 :     if (unlikely(!result_uval)) return NULL;
   28225           0 :     result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
   28226           0 :     kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1;
   28227           0 :     result_udata = PyUnicode_DATA(result_uval);
   28228             : #else
   28229             :     result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
   28230             :     if (unlikely(!result_uval)) return NULL;
   28231             :     result_ukind = sizeof(Py_UNICODE);
   28232             :     kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1;
   28233             :     result_udata = PyUnicode_AS_UNICODE(result_uval);
   28234             : #endif
   28235           0 :     assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
   28236           0 :     char_pos = 0;
   28237           0 :     for (i=0; i < value_count; i++) {
   28238           0 :         int ukind;
   28239           0 :         Py_ssize_t ulength;
   28240           0 :         void *udata;
   28241           0 :         PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
   28242           0 :         if (unlikely(__Pyx_PyUnicode_READY(uval)))
   28243             :             goto bad;
   28244           0 :         ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
   28245           0 :         if (unlikely(!ulength))
   28246           0 :             continue;
   28247           0 :         if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos))
   28248           0 :             goto overflow;
   28249           0 :         ukind = __Pyx_PyUnicode_KIND(uval);
   28250           0 :         udata = __Pyx_PyUnicode_DATA(uval);
   28251           0 :         if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
   28252           0 :             memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift));
   28253             :         } else {
   28254             :             #if PY_VERSION_HEX >= 0x030d0000
   28255             :             if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad;
   28256             :             #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
   28257           0 :             _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
   28258             :             #else
   28259             :             Py_ssize_t j;
   28260             :             for (j=0; j < ulength; j++) {
   28261             :                 Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
   28262             :                 __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
   28263             :             }
   28264             :             #endif
   28265             :         }
   28266           0 :         char_pos += ulength;
   28267             :     }
   28268             :     return result_uval;
   28269           0 : overflow:
   28270           0 :     PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
   28271           0 : bad:
   28272           0 :     Py_DECREF(result_uval);
   28273             :     return NULL;
   28274             : #else
   28275             :     CYTHON_UNUSED_VAR(max_char);
   28276             :     CYTHON_UNUSED_VAR(result_ulength);
   28277             :     CYTHON_UNUSED_VAR(value_count);
   28278             :     return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
   28279             : #endif
   28280             : }
   28281             : 
   28282             : /* GetAttr */
   28283           0 : static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
   28284             : #if CYTHON_USE_TYPE_SLOTS
   28285             : #if PY_MAJOR_VERSION >= 3
   28286           0 :     if (likely(PyUnicode_Check(n)))
   28287             : #else
   28288             :     if (likely(PyString_Check(n)))
   28289             : #endif
   28290           0 :         return __Pyx_PyObject_GetAttrStr(o, n);
   28291             : #endif
   28292           0 :     return PyObject_GetAttr(o, n);
   28293             : }
   28294             : 
   28295             : /* GetItemInt */
   28296           0 : static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
   28297           0 :     PyObject *r;
   28298           0 :     if (unlikely(!j)) return NULL;
   28299           0 :     r = PyObject_GetItem(o, j);
   28300           0 :     Py_DECREF(j);
   28301             :     return r;
   28302             : }
   28303         134 : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
   28304             :                                                               CYTHON_NCP_UNUSED int wraparound,
   28305             :                                                               CYTHON_NCP_UNUSED int boundscheck) {
   28306             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   28307         134 :     Py_ssize_t wrapped_i = i;
   28308         134 :     if (wraparound & unlikely(i < 0)) {
   28309           0 :         wrapped_i += PyList_GET_SIZE(o);
   28310             :     }
   28311         134 :     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
   28312         134 :         PyObject *r = PyList_GET_ITEM(o, wrapped_i);
   28313         134 :         Py_INCREF(r);
   28314         134 :         return r;
   28315             :     }
   28316           0 :     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
   28317             : #else
   28318             :     return PySequence_GetItem(o, i);
   28319             : #endif
   28320             : }
   28321         134 : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
   28322             :                                                               CYTHON_NCP_UNUSED int wraparound,
   28323             :                                                               CYTHON_NCP_UNUSED int boundscheck) {
   28324             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   28325         134 :     Py_ssize_t wrapped_i = i;
   28326         134 :     if (wraparound & unlikely(i < 0)) {
   28327           0 :         wrapped_i += PyTuple_GET_SIZE(o);
   28328             :     }
   28329         134 :     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
   28330         134 :         PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
   28331         134 :         Py_INCREF(r);
   28332         134 :         return r;
   28333             :     }
   28334           0 :     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
   28335             : #else
   28336             :     return PySequence_GetItem(o, i);
   28337             : #endif
   28338             : }
   28339           0 : static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
   28340             :                                                      CYTHON_NCP_UNUSED int wraparound,
   28341             :                                                      CYTHON_NCP_UNUSED int boundscheck) {
   28342             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
   28343           0 :     if (is_list || PyList_CheckExact(o)) {
   28344           0 :         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
   28345           0 :         if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
   28346           0 :             PyObject *r = PyList_GET_ITEM(o, n);
   28347           0 :             Py_INCREF(r);
   28348           0 :             return r;
   28349             :         }
   28350             :     }
   28351           0 :     else if (PyTuple_CheckExact(o)) {
   28352           0 :         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
   28353           0 :         if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
   28354           0 :             PyObject *r = PyTuple_GET_ITEM(o, n);
   28355           0 :             Py_INCREF(r);
   28356           0 :             return r;
   28357             :         }
   28358             :     } else {
   28359           0 :         PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
   28360           0 :         PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
   28361           0 :         if (mm && mm->mp_subscript) {
   28362           0 :             PyObject *r, *key = PyInt_FromSsize_t(i);
   28363           0 :             if (unlikely(!key)) return NULL;
   28364           0 :             r = mm->mp_subscript(o, key);
   28365           0 :             Py_DECREF(key);
   28366           0 :             return r;
   28367             :         }
   28368           0 :         if (likely(sm && sm->sq_item)) {
   28369           0 :             if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
   28370           0 :                 Py_ssize_t l = sm->sq_length(o);
   28371           0 :                 if (likely(l >= 0)) {
   28372           0 :                     i += l;
   28373             :                 } else {
   28374           0 :                     if (!PyErr_ExceptionMatches(PyExc_OverflowError))
   28375             :                         return NULL;
   28376           0 :                     PyErr_Clear();
   28377             :                 }
   28378             :             }
   28379           0 :             return sm->sq_item(o, i);
   28380             :         }
   28381             :     }
   28382             : #else
   28383             :     if (is_list || !PyMapping_Check(o)) {
   28384             :         return PySequence_GetItem(o, i);
   28385             :     }
   28386             : #endif
   28387           0 :     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
   28388             : }
   28389             : 
   28390             : /* PyObjectCallOneArg */
   28391           2 : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
   28392           2 :     PyObject *args[2] = {NULL, arg};
   28393           2 :     return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
   28394             : }
   28395             : 
   28396             : /* ObjectGetItem */
   28397             : #if CYTHON_USE_TYPE_SLOTS
   28398           0 : static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) {
   28399           0 :     PyObject *runerr = NULL;
   28400           0 :     Py_ssize_t key_value;
   28401           0 :     key_value = __Pyx_PyIndex_AsSsize_t(index);
   28402           0 :     if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
   28403           0 :         return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
   28404             :     }
   28405           0 :     if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
   28406           0 :         __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index));
   28407           0 :         PyErr_Clear();
   28408           0 :         PyErr_Format(PyExc_IndexError,
   28409             :             "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
   28410             :         __Pyx_DECREF_TypeName(index_type_name);
   28411             :     }
   28412             :     return NULL;
   28413             : }
   28414           0 : static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
   28415           0 :     __Pyx_TypeName obj_type_name;
   28416           0 :     if (likely(PyType_Check(obj))) {
   28417           0 :         PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem);
   28418           0 :         if (!meth) {
   28419           0 :             PyErr_Clear();
   28420             :         } else {
   28421           0 :             PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
   28422           0 :             Py_DECREF(meth);
   28423           0 :             return result;
   28424             :         }
   28425             :     }
   28426           0 :     obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
   28427           0 :     PyErr_Format(PyExc_TypeError,
   28428             :         "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
   28429           0 :     __Pyx_DECREF_TypeName(obj_type_name);
   28430           0 :     return NULL;
   28431             : }
   28432           0 : static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
   28433           0 :     PyTypeObject *tp = Py_TYPE(obj);
   28434           0 :     PyMappingMethods *mm = tp->tp_as_mapping;
   28435           0 :     PySequenceMethods *sm = tp->tp_as_sequence;
   28436           0 :     if (likely(mm && mm->mp_subscript)) {
   28437           0 :         return mm->mp_subscript(obj, key);
   28438             :     }
   28439           0 :     if (likely(sm && sm->sq_item)) {
   28440           0 :         return __Pyx_PyObject_GetIndex(obj, key);
   28441             :     }
   28442           0 :     return __Pyx_PyObject_GetItem_Slow(obj, key);
   28443             : }
   28444             : #endif
   28445             : 
   28446             : /* KeywordStringCheck */
   28447           0 : static int __Pyx_CheckKeywordStrings(
   28448             :     PyObject *kw,
   28449             :     const char* function_name,
   28450             :     int kw_allowed)
   28451             : {
   28452           0 :     PyObject* key = 0;
   28453           0 :     Py_ssize_t pos = 0;
   28454             : #if CYTHON_COMPILING_IN_PYPY
   28455             :     if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0))
   28456             :         goto invalid_keyword;
   28457             :     return 1;
   28458             : #else
   28459           0 :     if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
   28460           0 :         Py_ssize_t kwsize;
   28461             : #if CYTHON_ASSUME_SAFE_MACROS
   28462           0 :         kwsize = PyTuple_GET_SIZE(kw);
   28463             : #else
   28464             :         kwsize = PyTuple_Size(kw);
   28465             :         if (kwsize < 0) return 0;
   28466             : #endif
   28467           0 :         if (unlikely(kwsize == 0))
   28468             :             return 1;
   28469           0 :         if (!kw_allowed) {
   28470             : #if CYTHON_ASSUME_SAFE_MACROS
   28471           0 :             key = PyTuple_GET_ITEM(kw, 0);
   28472             : #else
   28473             :             key = PyTuple_GetItem(kw, pos);
   28474             :             if (!key) return 0;
   28475             : #endif
   28476           0 :             goto invalid_keyword;
   28477             :         }
   28478             : #if PY_VERSION_HEX < 0x03090000
   28479             :         for (pos = 0; pos < kwsize; pos++) {
   28480             : #if CYTHON_ASSUME_SAFE_MACROS
   28481             :             key = PyTuple_GET_ITEM(kw, pos);
   28482             : #else
   28483             :             key = PyTuple_GetItem(kw, pos);
   28484             :             if (!key) return 0;
   28485             : #endif
   28486             :             if (unlikely(!PyUnicode_Check(key)))
   28487             :                 goto invalid_keyword_type;
   28488             :         }
   28489             : #endif
   28490             :         return 1;
   28491             :     }
   28492           0 :     while (PyDict_Next(kw, &pos, &key, 0)) {
   28493             :         #if PY_MAJOR_VERSION < 3
   28494             :         if (unlikely(!PyString_Check(key)))
   28495             :         #endif
   28496           0 :             if (unlikely(!PyUnicode_Check(key)))
   28497           0 :                 goto invalid_keyword_type;
   28498             :     }
   28499           0 :     if (!kw_allowed && unlikely(key))
   28500           0 :         goto invalid_keyword;
   28501             :     return 1;
   28502           0 : invalid_keyword_type:
   28503           0 :     PyErr_Format(PyExc_TypeError,
   28504             :         "%.200s() keywords must be strings", function_name);
   28505           0 :     return 0;
   28506             : #endif
   28507           0 : invalid_keyword:
   28508             :     #if PY_MAJOR_VERSION < 3
   28509             :     PyErr_Format(PyExc_TypeError,
   28510             :         "%.200s() got an unexpected keyword argument '%.200s'",
   28511             :         function_name, PyString_AsString(key));
   28512             :     #else
   28513           0 :     PyErr_Format(PyExc_TypeError,
   28514             :         "%s() got an unexpected keyword argument '%U'",
   28515             :         function_name, key);
   28516             :     #endif
   28517           0 :     return 0;
   28518             : }
   28519             : 
   28520             : /* DivInt[Py_ssize_t] */
   28521           0 : static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
   28522           0 :     Py_ssize_t q = a / b;
   28523           0 :     Py_ssize_t r = a - q*b;
   28524           0 :     q -= ((r != 0) & ((r ^ b) < 0));
   28525           0 :     return q;
   28526             : }
   28527             : 
   28528             : /* GetAttr3 */
   28529             : #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
   28530           0 : static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
   28531           0 :     __Pyx_PyThreadState_declare
   28532           0 :     __Pyx_PyThreadState_assign
   28533           0 :     if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
   28534             :         return NULL;
   28535           0 :     __Pyx_PyErr_Clear();
   28536           0 :     Py_INCREF(d);
   28537             :     return d;
   28538             : }
   28539             : #endif
   28540           0 : static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
   28541           0 :     PyObject *r;
   28542             : #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
   28543             :     int res = PyObject_GetOptionalAttr(o, n, &r);
   28544             :     return (res != 0) ? r : __Pyx_NewRef(d);
   28545             : #else
   28546             :   #if CYTHON_USE_TYPE_SLOTS
   28547           0 :     if (likely(PyString_Check(n))) {
   28548           0 :         r = __Pyx_PyObject_GetAttrStrNoError(o, n);
   28549           0 :         if (unlikely(!r) && likely(!PyErr_Occurred())) {
   28550           0 :             r = __Pyx_NewRef(d);
   28551             :         }
   28552           0 :         return r;
   28553             :     }
   28554             :   #endif
   28555           0 :     r = PyObject_GetAttr(o, n);
   28556           0 :     return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
   28557             : #endif
   28558             : }
   28559             : 
   28560             : /* PyDictVersioning */
   28561             : #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
   28562             : static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
   28563             :     PyObject *dict = Py_TYPE(obj)->tp_dict;
   28564             :     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
   28565             : }
   28566             : static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
   28567             :     PyObject **dictptr = NULL;
   28568             :     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
   28569             :     if (offset) {
   28570             : #if CYTHON_COMPILING_IN_CPYTHON
   28571             :         dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
   28572             : #else
   28573             :         dictptr = _PyObject_GetDictPtr(obj);
   28574             : #endif
   28575             :     }
   28576             :     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
   28577             : }
   28578             : static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
   28579             :     PyObject *dict = Py_TYPE(obj)->tp_dict;
   28580             :     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
   28581             :         return 0;
   28582             :     return obj_dict_version == __Pyx_get_object_dict_version(obj);
   28583             : }
   28584             : #endif
   28585             : 
   28586             : /* GetModuleGlobalName */
   28587             : #if CYTHON_USE_DICT_VERSIONS
   28588             : static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
   28589             : #else
   28590           1 : static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
   28591             : #endif
   28592             : {
   28593           1 :     PyObject *result;
   28594             : #if !CYTHON_AVOID_BORROWED_REFS
   28595             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
   28596           1 :     result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
   28597             :     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
   28598           1 :     if (likely(result)) {
   28599           2 :         return __Pyx_NewRef(result);
   28600           0 :     } else if (unlikely(PyErr_Occurred())) {
   28601             :         return NULL;
   28602             :     }
   28603             : #elif CYTHON_COMPILING_IN_LIMITED_API
   28604             :     if (unlikely(!__pyx_m)) {
   28605             :         return NULL;
   28606             :     }
   28607             :     result = PyObject_GetAttr(__pyx_m, name);
   28608             :     if (likely(result)) {
   28609             :         return result;
   28610             :     }
   28611             : #else
   28612             :     result = PyDict_GetItem(__pyx_d, name);
   28613             :     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
   28614             :     if (likely(result)) {
   28615             :         return __Pyx_NewRef(result);
   28616             :     }
   28617             : #endif
   28618             : #else
   28619             :     result = PyObject_GetItem(__pyx_d, name);
   28620             :     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
   28621             :     if (likely(result)) {
   28622             :         return __Pyx_NewRef(result);
   28623             :     }
   28624             :     PyErr_Clear();
   28625             : #endif
   28626           0 :     return __Pyx_GetBuiltinName(name);
   28627             : }
   28628             : 
   28629             : /* RaiseTooManyValuesToUnpack */
   28630           0 : static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
   28631           0 :     PyErr_Format(PyExc_ValueError,
   28632             :                  "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
   28633           0 : }
   28634             : 
   28635             : /* RaiseNeedMoreValuesToUnpack */
   28636           0 : static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
   28637           0 :     PyErr_Format(PyExc_ValueError,
   28638             :                  "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
   28639             :                  index, (index == 1) ? "" : "s");
   28640           0 : }
   28641             : 
   28642             : /* RaiseNoneIterError */
   28643           0 : static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
   28644           0 :     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
   28645           0 : }
   28646             : 
   28647             : /* ExtTypeTest */
   28648           0 : static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
   28649           0 :     __Pyx_TypeName obj_type_name;
   28650           0 :     __Pyx_TypeName type_name;
   28651           0 :     if (unlikely(!type)) {
   28652           0 :         PyErr_SetString(PyExc_SystemError, "Missing type object");
   28653           0 :         return 0;
   28654             :     }
   28655           0 :     if (likely(__Pyx_TypeCheck(obj, type)))
   28656             :         return 1;
   28657           0 :     obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
   28658           0 :     type_name = __Pyx_PyType_GetName(type);
   28659           0 :     PyErr_Format(PyExc_TypeError,
   28660             :                  "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
   28661             :                  obj_type_name, type_name);
   28662           0 :     __Pyx_DECREF_TypeName(obj_type_name);
   28663           0 :     __Pyx_DECREF_TypeName(type_name);
   28664           0 :     return 0;
   28665             : }
   28666             : 
   28667             : /* GetTopmostException */
   28668             : #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
   28669             : static _PyErr_StackItem *
   28670           6 : __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
   28671             : {
   28672           6 :     _PyErr_StackItem *exc_info = tstate->exc_info;
   28673          26 :     while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
   28674          26 :            exc_info->previous_item != NULL)
   28675             :     {
   28676             :         exc_info = exc_info->previous_item;
   28677             :     }
   28678           6 :     return exc_info;
   28679             : }
   28680             : #endif
   28681             : 
   28682             : /* SaveResetException */
   28683             : #if CYTHON_FAST_THREAD_STATE
   28684           6 : static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
   28685             :   #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
   28686           6 :     _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
   28687           6 :     PyObject *exc_value = exc_info->exc_value;
   28688           6 :     if (exc_value == NULL || exc_value == Py_None) {
   28689           6 :         *value = NULL;
   28690           6 :         *type = NULL;
   28691           6 :         *tb = NULL;
   28692             :     } else {
   28693           0 :         *value = exc_value;
   28694           0 :         Py_INCREF(*value);
   28695           0 :         *type = (PyObject*) Py_TYPE(exc_value);
   28696           0 :         Py_INCREF(*type);
   28697           0 :         *tb = PyException_GetTraceback(exc_value);
   28698             :     }
   28699             :   #elif CYTHON_USE_EXC_INFO_STACK
   28700             :     _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
   28701             :     *type = exc_info->exc_type;
   28702             :     *value = exc_info->exc_value;
   28703             :     *tb = exc_info->exc_traceback;
   28704             :     Py_XINCREF(*type);
   28705             :     Py_XINCREF(*value);
   28706             :     Py_XINCREF(*tb);
   28707             :   #else
   28708             :     *type = tstate->exc_type;
   28709             :     *value = tstate->exc_value;
   28710             :     *tb = tstate->exc_traceback;
   28711             :     Py_XINCREF(*type);
   28712             :     Py_XINCREF(*value);
   28713             :     Py_XINCREF(*tb);
   28714             :   #endif
   28715           6 : }
   28716           1 : static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
   28717             :   #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
   28718           1 :     _PyErr_StackItem *exc_info = tstate->exc_info;
   28719           1 :     PyObject *tmp_value = exc_info->exc_value;
   28720           1 :     exc_info->exc_value = value;
   28721           1 :     Py_XDECREF(tmp_value);
   28722           1 :     Py_XDECREF(type);
   28723           1 :     Py_XDECREF(tb);
   28724             :   #else
   28725             :     PyObject *tmp_type, *tmp_value, *tmp_tb;
   28726             :     #if CYTHON_USE_EXC_INFO_STACK
   28727             :     _PyErr_StackItem *exc_info = tstate->exc_info;
   28728             :     tmp_type = exc_info->exc_type;
   28729             :     tmp_value = exc_info->exc_value;
   28730             :     tmp_tb = exc_info->exc_traceback;
   28731             :     exc_info->exc_type = type;
   28732             :     exc_info->exc_value = value;
   28733             :     exc_info->exc_traceback = tb;
   28734             :     #else
   28735             :     tmp_type = tstate->exc_type;
   28736             :     tmp_value = tstate->exc_value;
   28737             :     tmp_tb = tstate->exc_traceback;
   28738             :     tstate->exc_type = type;
   28739             :     tstate->exc_value = value;
   28740             :     tstate->exc_traceback = tb;
   28741             :     #endif
   28742             :     Py_XDECREF(tmp_type);
   28743             :     Py_XDECREF(tmp_value);
   28744             :     Py_XDECREF(tmp_tb);
   28745             :   #endif
   28746           1 : }
   28747             : #endif
   28748             : 
   28749             : /* GetException */
   28750             : #if CYTHON_FAST_THREAD_STATE
   28751           0 : static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
   28752             : #else
   28753             : static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
   28754             : #endif
   28755             : {
   28756           0 :     PyObject *local_type = NULL, *local_value, *local_tb = NULL;
   28757             : #if CYTHON_FAST_THREAD_STATE
   28758           0 :     PyObject *tmp_type, *tmp_value, *tmp_tb;
   28759             :   #if PY_VERSION_HEX >= 0x030C00A6
   28760           0 :     local_value = tstate->current_exception;
   28761           0 :     tstate->current_exception = 0;
   28762           0 :     if (likely(local_value)) {
   28763           0 :         local_type = (PyObject*) Py_TYPE(local_value);
   28764           0 :         Py_INCREF(local_type);
   28765           0 :         local_tb = PyException_GetTraceback(local_value);
   28766             :     }
   28767             :   #else
   28768             :     local_type = tstate->curexc_type;
   28769             :     local_value = tstate->curexc_value;
   28770             :     local_tb = tstate->curexc_traceback;
   28771             :     tstate->curexc_type = 0;
   28772             :     tstate->curexc_value = 0;
   28773             :     tstate->curexc_traceback = 0;
   28774             :   #endif
   28775             : #else
   28776             :     PyErr_Fetch(&local_type, &local_value, &local_tb);
   28777             : #endif
   28778           0 :     PyErr_NormalizeException(&local_type, &local_value, &local_tb);
   28779             : #if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
   28780           0 :     if (unlikely(tstate->current_exception))
   28781             : #elif CYTHON_FAST_THREAD_STATE
   28782             :     if (unlikely(tstate->curexc_type))
   28783             : #else
   28784             :     if (unlikely(PyErr_Occurred()))
   28785             : #endif
   28786           0 :         goto bad;
   28787             :     #if PY_MAJOR_VERSION >= 3
   28788           0 :     if (local_tb) {
   28789           0 :         if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
   28790           0 :             goto bad;
   28791             :     }
   28792             :     #endif
   28793           0 :     Py_XINCREF(local_tb);
   28794           0 :     Py_XINCREF(local_type);
   28795           0 :     Py_XINCREF(local_value);
   28796           0 :     *type = local_type;
   28797           0 :     *value = local_value;
   28798           0 :     *tb = local_tb;
   28799             : #if CYTHON_FAST_THREAD_STATE
   28800             :     #if CYTHON_USE_EXC_INFO_STACK
   28801             :     {
   28802           0 :         _PyErr_StackItem *exc_info = tstate->exc_info;
   28803             :       #if PY_VERSION_HEX >= 0x030B00a4
   28804           0 :         tmp_value = exc_info->exc_value;
   28805           0 :         exc_info->exc_value = local_value;
   28806           0 :         tmp_type = NULL;
   28807           0 :         tmp_tb = NULL;
   28808           0 :         Py_XDECREF(local_type);
   28809           0 :         Py_XDECREF(local_tb);
   28810             :       #else
   28811             :         tmp_type = exc_info->exc_type;
   28812             :         tmp_value = exc_info->exc_value;
   28813             :         tmp_tb = exc_info->exc_traceback;
   28814             :         exc_info->exc_type = local_type;
   28815             :         exc_info->exc_value = local_value;
   28816             :         exc_info->exc_traceback = local_tb;
   28817             :       #endif
   28818             :     }
   28819             :     #else
   28820             :     tmp_type = tstate->exc_type;
   28821             :     tmp_value = tstate->exc_value;
   28822             :     tmp_tb = tstate->exc_traceback;
   28823             :     tstate->exc_type = local_type;
   28824             :     tstate->exc_value = local_value;
   28825             :     tstate->exc_traceback = local_tb;
   28826             :     #endif
   28827           0 :     Py_XDECREF(tmp_type);
   28828           0 :     Py_XDECREF(tmp_value);
   28829           0 :     Py_XDECREF(tmp_tb);
   28830             : #else
   28831             :     PyErr_SetExcInfo(local_type, local_value, local_tb);
   28832             : #endif
   28833           0 :     return 0;
   28834           0 : bad:
   28835           0 :     *type = 0;
   28836           0 :     *value = 0;
   28837           0 :     *tb = 0;
   28838           0 :     Py_XDECREF(local_type);
   28839           0 :     Py_XDECREF(local_value);
   28840           0 :     Py_XDECREF(local_tb);
   28841           0 :     return -1;
   28842             : }
   28843             : 
   28844             : /* SwapException */
   28845             : #if CYTHON_FAST_THREAD_STATE
   28846           0 : static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
   28847           0 :     PyObject *tmp_type, *tmp_value, *tmp_tb;
   28848             :   #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
   28849           0 :     _PyErr_StackItem *exc_info = tstate->exc_info;
   28850           0 :     tmp_value = exc_info->exc_value;
   28851           0 :     exc_info->exc_value = *value;
   28852           0 :     if (tmp_value == NULL || tmp_value == Py_None) {
   28853           0 :         Py_XDECREF(tmp_value);
   28854           0 :         tmp_value = NULL;
   28855           0 :         tmp_type = NULL;
   28856           0 :         tmp_tb = NULL;
   28857             :     } else {
   28858           0 :         tmp_type = (PyObject*) Py_TYPE(tmp_value);
   28859           0 :         Py_INCREF(tmp_type);
   28860             :         #if CYTHON_COMPILING_IN_CPYTHON
   28861           0 :         tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
   28862           0 :         Py_XINCREF(tmp_tb);
   28863             :         #else
   28864             :         tmp_tb = PyException_GetTraceback(tmp_value);
   28865             :         #endif
   28866             :     }
   28867             :   #elif CYTHON_USE_EXC_INFO_STACK
   28868             :     _PyErr_StackItem *exc_info = tstate->exc_info;
   28869             :     tmp_type = exc_info->exc_type;
   28870             :     tmp_value = exc_info->exc_value;
   28871             :     tmp_tb = exc_info->exc_traceback;
   28872             :     exc_info->exc_type = *type;
   28873             :     exc_info->exc_value = *value;
   28874             :     exc_info->exc_traceback = *tb;
   28875             :   #else
   28876             :     tmp_type = tstate->exc_type;
   28877             :     tmp_value = tstate->exc_value;
   28878             :     tmp_tb = tstate->exc_traceback;
   28879             :     tstate->exc_type = *type;
   28880             :     tstate->exc_value = *value;
   28881             :     tstate->exc_traceback = *tb;
   28882             :   #endif
   28883           0 :     *type = tmp_type;
   28884           0 :     *value = tmp_value;
   28885           0 :     *tb = tmp_tb;
   28886           0 : }
   28887             : #else
   28888             : static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
   28889             :     PyObject *tmp_type, *tmp_value, *tmp_tb;
   28890             :     PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
   28891             :     PyErr_SetExcInfo(*type, *value, *tb);
   28892             :     *type = tmp_type;
   28893             :     *value = tmp_value;
   28894             :     *tb = tmp_tb;
   28895             : }
   28896             : #endif
   28897             : 
   28898             : /* Import */
   28899           1 : static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
   28900           1 :     PyObject *module = 0;
   28901           1 :     PyObject *empty_dict = 0;
   28902           1 :     PyObject *empty_list = 0;
   28903             :     #if PY_MAJOR_VERSION < 3
   28904             :     PyObject *py_import;
   28905             :     py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
   28906             :     if (unlikely(!py_import))
   28907             :         goto bad;
   28908             :     if (!from_list) {
   28909             :         empty_list = PyList_New(0);
   28910             :         if (unlikely(!empty_list))
   28911             :             goto bad;
   28912             :         from_list = empty_list;
   28913             :     }
   28914             :     #endif
   28915           1 :     empty_dict = PyDict_New();
   28916           1 :     if (unlikely(!empty_dict))
   28917           0 :         goto bad;
   28918             :     {
   28919             :         #if PY_MAJOR_VERSION >= 3
   28920           1 :         if (level == -1) {
   28921           0 :             if (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
   28922           0 :                 module = PyImport_ImportModuleLevelObject(
   28923           0 :                     name, __pyx_d, empty_dict, from_list, 1);
   28924           0 :                 if (unlikely(!module)) {
   28925           0 :                     if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
   28926           0 :                         goto bad;
   28927           0 :                     PyErr_Clear();
   28928             :                 }
   28929             :             }
   28930           0 :             level = 0;
   28931             :         }
   28932             :         #endif
   28933           0 :         if (!module) {
   28934             :             #if PY_MAJOR_VERSION < 3
   28935             :             PyObject *py_level = PyInt_FromLong(level);
   28936             :             if (unlikely(!py_level))
   28937             :                 goto bad;
   28938             :             module = PyObject_CallFunctionObjArgs(py_import,
   28939             :                 name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
   28940             :             Py_DECREF(py_level);
   28941             :             #else
   28942           1 :             module = PyImport_ImportModuleLevelObject(
   28943           1 :                 name, __pyx_d, empty_dict, from_list, level);
   28944             :             #endif
   28945             :         }
   28946             :     }
   28947           1 : bad:
   28948           1 :     Py_XDECREF(empty_dict);
   28949           1 :     Py_XDECREF(empty_list);
   28950             :     #if PY_MAJOR_VERSION < 3
   28951             :     Py_XDECREF(py_import);
   28952             :     #endif
   28953           1 :     return module;
   28954             : }
   28955             : 
   28956             : /* ImportDottedModule */
   28957             : #if PY_MAJOR_VERSION >= 3
   28958           0 : static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
   28959           0 :     PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
   28960           0 :     if (unlikely(PyErr_Occurred())) {
   28961           0 :         PyErr_Clear();
   28962             :     }
   28963           0 :     if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) {
   28964             :         partial_name = name;
   28965             :     } else {
   28966           0 :         slice = PySequence_GetSlice(parts_tuple, 0, count);
   28967           0 :         if (unlikely(!slice))
   28968           0 :             goto bad;
   28969           0 :         sep = PyUnicode_FromStringAndSize(".", 1);
   28970           0 :         if (unlikely(!sep))
   28971           0 :             goto bad;
   28972           0 :         partial_name = PyUnicode_Join(sep, slice);
   28973             :     }
   28974           0 :     PyErr_Format(
   28975             : #if PY_MAJOR_VERSION < 3
   28976             :         PyExc_ImportError,
   28977             :         "No module named '%s'", PyString_AS_STRING(partial_name));
   28978             : #else
   28979             : #if PY_VERSION_HEX >= 0x030600B1
   28980             :         PyExc_ModuleNotFoundError,
   28981             : #else
   28982             :         PyExc_ImportError,
   28983             : #endif
   28984             :         "No module named '%U'", partial_name);
   28985             : #endif
   28986           0 : bad:
   28987           0 :     Py_XDECREF(sep);
   28988           0 :     Py_XDECREF(slice);
   28989           0 :     Py_XDECREF(partial_name);
   28990           0 :     return NULL;
   28991             : }
   28992             : #endif
   28993             : #if PY_MAJOR_VERSION >= 3
   28994           0 : static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
   28995           0 :     PyObject *imported_module;
   28996             : #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
   28997             :     PyObject *modules = PyImport_GetModuleDict();
   28998             :     if (unlikely(!modules))
   28999             :         return NULL;
   29000             :     imported_module = __Pyx_PyDict_GetItemStr(modules, name);
   29001             :     Py_XINCREF(imported_module);
   29002             : #else
   29003           0 :     imported_module = PyImport_GetModule(name);
   29004             : #endif
   29005           0 :     return imported_module;
   29006             : }
   29007             : #endif
   29008             : #if PY_MAJOR_VERSION >= 3
   29009           0 : static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
   29010           0 :     Py_ssize_t i, nparts;
   29011           0 :     nparts = PyTuple_GET_SIZE(parts_tuple);
   29012           0 :     for (i=1; i < nparts && module; i++) {
   29013           0 :         PyObject *part, *submodule;
   29014             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   29015           0 :         part = PyTuple_GET_ITEM(parts_tuple, i);
   29016             : #else
   29017             :         part = PySequence_ITEM(parts_tuple, i);
   29018             : #endif
   29019           0 :         submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
   29020             : #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
   29021             :         Py_DECREF(part);
   29022             : #endif
   29023           0 :         Py_DECREF(module);
   29024           0 :         module = submodule;
   29025             :     }
   29026           0 :     if (unlikely(!module)) {
   29027           0 :         return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
   29028             :     }
   29029             :     return module;
   29030             : }
   29031             : #endif
   29032           0 : static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
   29033             : #if PY_MAJOR_VERSION < 3
   29034             :     PyObject *module, *from_list, *star = __pyx_n_s__3;
   29035             :     CYTHON_UNUSED_VAR(parts_tuple);
   29036             :     from_list = PyList_New(1);
   29037             :     if (unlikely(!from_list))
   29038             :         return NULL;
   29039             :     Py_INCREF(star);
   29040             :     PyList_SET_ITEM(from_list, 0, star);
   29041             :     module = __Pyx_Import(name, from_list, 0);
   29042             :     Py_DECREF(from_list);
   29043             :     return module;
   29044             : #else
   29045           0 :     PyObject *imported_module;
   29046           0 :     PyObject *module = __Pyx_Import(name, NULL, 0);
   29047           0 :     if (!parts_tuple || unlikely(!module))
   29048             :         return module;
   29049           0 :     imported_module = __Pyx__ImportDottedModule_Lookup(name);
   29050           0 :     if (likely(imported_module)) {
   29051           0 :         Py_DECREF(module);
   29052           0 :         return imported_module;
   29053             :     }
   29054           0 :     PyErr_Clear();
   29055           0 :     return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
   29056             : #endif
   29057             : }
   29058           0 : static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
   29059             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1
   29060           0 :     PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
   29061           0 :     if (likely(module)) {
   29062           0 :         PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec);
   29063           0 :         if (likely(spec)) {
   29064           0 :             PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing);
   29065           0 :             if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
   29066           0 :                 Py_DECREF(spec);
   29067             :                 spec = NULL;
   29068             :             }
   29069           0 :             Py_XDECREF(unsafe);
   29070             :         }
   29071           0 :         if (likely(!spec)) {
   29072           0 :             PyErr_Clear();
   29073           0 :             return module;
   29074             :         }
   29075           0 :         Py_DECREF(spec);
   29076           0 :         Py_DECREF(module);
   29077           0 :     } else if (PyErr_Occurred()) {
   29078           0 :         PyErr_Clear();
   29079             :     }
   29080             : #endif
   29081           0 :     return __Pyx__ImportDottedModule(name, parts_tuple);
   29082             : }
   29083             : 
   29084             : /* FastTypeChecks */
   29085             : #if CYTHON_COMPILING_IN_CPYTHON
   29086             : static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
   29087           0 :     while (a) {
   29088           0 :         a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
   29089           0 :         if (a == b)
   29090             :             return 1;
   29091             :     }
   29092           0 :     return b == &PyBaseObject_Type;
   29093             : }
   29094         542 : static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
   29095         542 :     PyObject *mro;
   29096         542 :     if (a == b) return 1;
   29097         408 :     mro = a->tp_mro;
   29098         408 :     if (likely(mro)) {
   29099         408 :         Py_ssize_t i, n;
   29100         408 :         n = PyTuple_GET_SIZE(mro);
   29101        1221 :         for (i = 0; i < n; i++) {
   29102         816 :             if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
   29103             :                 return 1;
   29104             :         }
   29105             :         return 0;
   29106             :     }
   29107         542 :     return __Pyx_InBases(a, b);
   29108             : }
   29109          16 : static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
   29110          16 :     PyObject *mro;
   29111          16 :     if (cls == a || cls == b) return 1;
   29112           2 :     mro = cls->tp_mro;
   29113           2 :     if (likely(mro)) {
   29114           2 :         Py_ssize_t i, n;
   29115           2 :         n = PyTuple_GET_SIZE(mro);
   29116           6 :         for (i = 0; i < n; i++) {
   29117           4 :             PyObject *base = PyTuple_GET_ITEM(mro, i);
   29118           4 :             if (base == (PyObject *)a || base == (PyObject *)b)
   29119             :                 return 1;
   29120             :         }
   29121             :         return 0;
   29122             :     }
   29123           0 :     return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
   29124             : }
   29125             : #if PY_MAJOR_VERSION == 2
   29126             : static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
   29127             :     PyObject *exception, *value, *tb;
   29128             :     int res;
   29129             :     __Pyx_PyThreadState_declare
   29130             :     __Pyx_PyThreadState_assign
   29131             :     __Pyx_ErrFetch(&exception, &value, &tb);
   29132             :     res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
   29133             :     if (unlikely(res == -1)) {
   29134             :         PyErr_WriteUnraisable(err);
   29135             :         res = 0;
   29136             :     }
   29137             :     if (!res) {
   29138             :         res = PyObject_IsSubclass(err, exc_type2);
   29139             :         if (unlikely(res == -1)) {
   29140             :             PyErr_WriteUnraisable(err);
   29141             :             res = 0;
   29142             :         }
   29143             :     }
   29144             :     __Pyx_ErrRestore(exception, value, tb);
   29145             :     return res;
   29146             : }
   29147             : #else
   29148           0 : static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
   29149           0 :     if (exc_type1) {
   29150           0 :         return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
   29151             :     } else {
   29152           0 :         return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
   29153             :     }
   29154             : }
   29155             : #endif
   29156           0 : static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
   29157           0 :     Py_ssize_t i, n;
   29158           0 :     assert(PyExceptionClass_Check(exc_type));
   29159           0 :     n = PyTuple_GET_SIZE(tuple);
   29160             : #if PY_MAJOR_VERSION >= 3
   29161           0 :     for (i=0; i<n; i++) {
   29162           0 :         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
   29163             :     }
   29164             : #endif
   29165           0 :     for (i=0; i<n; i++) {
   29166           0 :         PyObject *t = PyTuple_GET_ITEM(tuple, i);
   29167             :         #if PY_MAJOR_VERSION < 3
   29168             :         if (likely(exc_type == t)) return 1;
   29169             :         #endif
   29170           0 :         if (likely(PyExceptionClass_Check(t))) {
   29171           0 :             if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
   29172             :         } else {
   29173           0 :         }
   29174             :     }
   29175             :     return 0;
   29176             : }
   29177           0 : static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
   29178           0 :     if (likely(err == exc_type)) return 1;
   29179           0 :     if (likely(PyExceptionClass_Check(err))) {
   29180           0 :         if (likely(PyExceptionClass_Check(exc_type))) {
   29181           0 :             return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
   29182           0 :         } else if (likely(PyTuple_Check(exc_type))) {
   29183           0 :             return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
   29184             :         } else {
   29185           0 :         }
   29186             :     }
   29187           0 :     return PyErr_GivenExceptionMatches(err, exc_type);
   29188             : }
   29189           0 : static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
   29190           0 :     assert(PyExceptionClass_Check(exc_type1));
   29191           0 :     assert(PyExceptionClass_Check(exc_type2));
   29192           0 :     if (likely(err == exc_type1 || err == exc_type2)) return 1;
   29193           0 :     if (likely(PyExceptionClass_Check(err))) {
   29194           0 :         return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
   29195             :     }
   29196           0 :     return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
   29197             : }
   29198             : #endif
   29199             : 
   29200             : /* PySequenceMultiply */
   29201           0 : static PyObject* __Pyx_PySequence_Multiply_Generic(PyObject *seq, Py_ssize_t mul) {
   29202           0 :     PyObject *result, *pymul = PyInt_FromSsize_t(mul);
   29203           0 :     if (unlikely(!pymul))
   29204             :         return NULL;
   29205           0 :     result = PyNumber_Multiply(seq, pymul);
   29206           0 :     Py_DECREF(pymul);
   29207             :     return result;
   29208             : }
   29209           0 : static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul) {
   29210             : #if CYTHON_USE_TYPE_SLOTS
   29211           0 :     PyTypeObject *type = Py_TYPE(seq);
   29212           0 :     if (likely(type->tp_as_sequence && type->tp_as_sequence->sq_repeat)) {
   29213           0 :         return type->tp_as_sequence->sq_repeat(seq, mul);
   29214             :     } else
   29215             : #endif
   29216             :     {
   29217           0 :         return __Pyx_PySequence_Multiply_Generic(seq, mul);
   29218             :     }
   29219             : }
   29220             : 
   29221             : /* SetItemInt */
   29222           0 : static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
   29223           0 :     int r;
   29224           0 :     if (unlikely(!j)) return -1;
   29225           0 :     r = PyObject_SetItem(o, j, v);
   29226           0 :     Py_DECREF(j);
   29227             :     return r;
   29228             : }
   29229         134 : static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
   29230             :                                                CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
   29231             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
   29232         134 :     if (is_list || PyList_CheckExact(o)) {
   29233         134 :         Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
   29234         134 :         if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
   29235         134 :             PyObject* old = PyList_GET_ITEM(o, n);
   29236         134 :             Py_INCREF(v);
   29237         134 :             PyList_SET_ITEM(o, n, v);
   29238         134 :             Py_DECREF(old);
   29239         134 :             return 1;
   29240             :         }
   29241             :     } else {
   29242           0 :         PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
   29243           0 :         PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
   29244           0 :         if (mm && mm->mp_ass_subscript) {
   29245           0 :             int r;
   29246           0 :             PyObject *key = PyInt_FromSsize_t(i);
   29247           0 :             if (unlikely(!key)) return -1;
   29248           0 :             r = mm->mp_ass_subscript(o, key, v);
   29249           0 :             Py_DECREF(key);
   29250           0 :             return r;
   29251             :         }
   29252           0 :         if (likely(sm && sm->sq_ass_item)) {
   29253           0 :             if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
   29254           0 :                 Py_ssize_t l = sm->sq_length(o);
   29255           0 :                 if (likely(l >= 0)) {
   29256           0 :                     i += l;
   29257             :                 } else {
   29258           0 :                     if (!PyErr_ExceptionMatches(PyExc_OverflowError))
   29259             :                         return -1;
   29260           0 :                     PyErr_Clear();
   29261             :                 }
   29262             :             }
   29263           0 :             return sm->sq_ass_item(o, i, v);
   29264             :         }
   29265             :     }
   29266             : #else
   29267             :     if (is_list || !PyMapping_Check(o))
   29268             :     {
   29269             :         return PySequence_SetItem(o, i, v);
   29270             :     }
   29271             : #endif
   29272           0 :     return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
   29273             : }
   29274             : 
   29275             : /* RaiseUnboundLocalError */
   29276           0 : static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
   29277           0 :     PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
   29278             : }
   29279             : 
   29280             : /* DivInt[long] */
   29281           0 : static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
   29282           0 :     long q = a / b;
   29283           0 :     long r = a - q*b;
   29284           0 :     q -= ((r != 0) & ((r ^ b) < 0));
   29285           0 :     return q;
   29286             : }
   29287             : 
   29288             : /* ImportFrom */
   29289           0 : static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
   29290           0 :     PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
   29291           0 :     if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
   29292           0 :         const char* module_name_str = 0;
   29293           0 :         PyObject* module_name = 0;
   29294           0 :         PyObject* module_dot = 0;
   29295           0 :         PyObject* full_name = 0;
   29296           0 :         PyErr_Clear();
   29297           0 :         module_name_str = PyModule_GetName(module);
   29298           0 :         if (unlikely(!module_name_str)) { goto modbad; }
   29299           0 :         module_name = PyUnicode_FromString(module_name_str);
   29300           0 :         if (unlikely(!module_name)) { goto modbad; }
   29301           0 :         module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__2);
   29302           0 :         if (unlikely(!module_dot)) { goto modbad; }
   29303           0 :         full_name = PyUnicode_Concat(module_dot, name);
   29304           0 :         if (unlikely(!full_name)) { goto modbad; }
   29305             :         #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
   29306             :         {
   29307             :             PyObject *modules = PyImport_GetModuleDict();
   29308             :             if (unlikely(!modules))
   29309             :                 goto modbad;
   29310             :             value = PyObject_GetItem(modules, full_name);
   29311             :         }
   29312             :         #else
   29313           0 :         value = PyImport_GetModule(full_name);
   29314             :         #endif
   29315           0 :       modbad:
   29316           0 :         Py_XDECREF(full_name);
   29317           0 :         Py_XDECREF(module_dot);
   29318           0 :         Py_XDECREF(module_name);
   29319             :     }
   29320           0 :     if (unlikely(!value)) {
   29321           0 :         PyErr_Format(PyExc_ImportError,
   29322             :         #if PY_MAJOR_VERSION < 3
   29323             :             "cannot import name %.230s", PyString_AS_STRING(name));
   29324             :         #else
   29325             :             "cannot import name %S", name);
   29326             :         #endif
   29327             :     }
   29328           0 :     return value;
   29329             : }
   29330             : 
   29331             : /* HasAttr */
   29332           0 : static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
   29333           0 :     PyObject *r;
   29334           0 :     if (unlikely(!__Pyx_PyBaseString_Check(n))) {
   29335           0 :         PyErr_SetString(PyExc_TypeError,
   29336             :                         "hasattr(): attribute name must be string");
   29337           0 :         return -1;
   29338             :     }
   29339           0 :     r = __Pyx_GetAttr(o, n);
   29340           0 :     if (!r) {
   29341           0 :         PyErr_Clear();
   29342           0 :         return 0;
   29343             :     } else {
   29344           0 :         Py_DECREF(r);
   29345           0 :         return 1;
   29346             :     }
   29347             : }
   29348             : 
   29349             : /* DictGetItem */
   29350             : #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
   29351         134 : static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
   29352         134 :     PyObject *value;
   29353         134 :     value = PyDict_GetItemWithError(d, key);
   29354         134 :     if (unlikely(!value)) {
   29355           0 :         if (!PyErr_Occurred()) {
   29356           0 :             if (unlikely(PyTuple_Check(key))) {
   29357           0 :                 PyObject* args = PyTuple_Pack(1, key);
   29358           0 :                 if (likely(args)) {
   29359           0 :                     PyErr_SetObject(PyExc_KeyError, args);
   29360           0 :                     Py_DECREF(args);
   29361             :                 }
   29362             :             } else {
   29363           0 :                 PyErr_SetObject(PyExc_KeyError, key);
   29364             :             }
   29365             :         }
   29366           0 :         return NULL;
   29367             :     }
   29368         134 :     Py_INCREF(value);
   29369             :     return value;
   29370             : }
   29371             : #endif
   29372             : 
   29373             : /* UnicodeAsUCS4 */
   29374         134 : static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
   29375         134 :    Py_ssize_t length;
   29376             :    #if CYTHON_PEP393_ENABLED
   29377         134 :    length = PyUnicode_GET_LENGTH(x);
   29378         134 :    if (likely(length == 1)) {
   29379         134 :        return PyUnicode_READ_CHAR(x, 0);
   29380             :    }
   29381             :    #else
   29382             :    length = PyUnicode_GET_SIZE(x);
   29383             :    if (likely(length == 1)) {
   29384             :        return PyUnicode_AS_UNICODE(x)[0];
   29385             :    }
   29386             :    #if Py_UNICODE_SIZE == 2
   29387             :    else if (PyUnicode_GET_SIZE(x) == 2) {
   29388             :        Py_UCS4 high_val = PyUnicode_AS_UNICODE(x)[0];
   29389             :        if (high_val >= 0xD800 && high_val <= 0xDBFF) {
   29390             :            Py_UCS4 low_val = PyUnicode_AS_UNICODE(x)[1];
   29391             :            if (low_val >= 0xDC00 && low_val <= 0xDFFF) {
   29392             :                return 0x10000 + (((high_val & ((1<<10)-1)) << 10) | (low_val & ((1<<10)-1)));
   29393             :            }
   29394             :        }
   29395             :    }
   29396             :    #endif
   29397             :    #endif
   29398           0 :    PyErr_Format(PyExc_ValueError,
   29399             :                 "only single character unicode strings can be converted to Py_UCS4, "
   29400             :                 "got length %" CYTHON_FORMAT_SSIZE_T "d", length);
   29401           0 :    return (Py_UCS4)-1;
   29402             : }
   29403             : 
   29404             : /* object_ord */
   29405           0 : static long __Pyx__PyObject_Ord(PyObject* c) {
   29406           0 :     Py_ssize_t size;
   29407           0 :     if (PyBytes_Check(c)) {
   29408           0 :         size = PyBytes_GET_SIZE(c);
   29409           0 :         if (likely(size == 1)) {
   29410           0 :             return (unsigned char) PyBytes_AS_STRING(c)[0];
   29411             :         }
   29412             : #if PY_MAJOR_VERSION < 3
   29413             :     } else if (PyUnicode_Check(c)) {
   29414             :         return (long)__Pyx_PyUnicode_AsPy_UCS4(c);
   29415             : #endif
   29416             : #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
   29417           0 :     } else if (PyByteArray_Check(c)) {
   29418           0 :         size = PyByteArray_GET_SIZE(c);
   29419           0 :         if (likely(size == 1)) {
   29420           0 :             return (unsigned char) PyByteArray_AS_STRING(c)[0];
   29421             :         }
   29422             : #endif
   29423             :     } else {
   29424           0 :         __Pyx_TypeName c_type_name = __Pyx_PyType_GetName(Py_TYPE(c));
   29425           0 :         PyErr_Format(PyExc_TypeError,
   29426             :             "ord() expected string of length 1, but " __Pyx_FMT_TYPENAME " found",
   29427             :             c_type_name);
   29428           0 :         __Pyx_DECREF_TypeName(c_type_name);
   29429           0 :         return (long)(Py_UCS4)-1;
   29430             :     }
   29431           0 :     PyErr_Format(PyExc_TypeError,
   29432             :         "ord() expected a character, but string of length %zd found", size);
   29433           0 :     return (long)(Py_UCS4)-1;
   29434             : }
   29435             : 
   29436             : /* memoryview_get_from_buffer */
   29437             : #if !CYTHON_COMPILING_IN_LIMITED_API || CYTHON_LIMITED_API >= 0x030b0000
   29438             : #else
   29439             : static Py_ssize_t __Pyx_PyMemoryView_Get_itemsize(PyObject *obj) {
   29440             :     Py_ssize_t result;
   29441             :     PyObject *attr = PyObject_GetAttr(obj, __pyx_n_s_itemsize);
   29442             :     if (!attr) {
   29443             :         goto bad;
   29444             :     }
   29445             :     result = PyLong_AsSsize_t(attr);
   29446             :     Py_DECREF(attr);
   29447             :     return result;
   29448             :     bad:
   29449             :     Py_XDECREF(attr);
   29450             :     return -1;
   29451             : }
   29452             : #endif
   29453             : 
   29454             : /* memoryview_get_from_buffer */
   29455             : #if !CYTHON_COMPILING_IN_LIMITED_API || CYTHON_LIMITED_API >= 0x030b0000
   29456             : #else
   29457             : static int __Pyx_PyMemoryView_Get_ndim(PyObject *obj) {
   29458             :     int result;
   29459             :     PyObject *attr = PyObject_GetAttr(obj, __pyx_n_s_ndim);
   29460             :     if (!attr) {
   29461             :         goto bad;
   29462             :     }
   29463             :     result = PyLong_AsLong(attr);
   29464             :     Py_DECREF(attr);
   29465             :     return result;
   29466             :     bad:
   29467             :     Py_XDECREF(attr);
   29468             :     return -1;
   29469             : }
   29470             : #endif
   29471             : 
   29472             : /* IterFinish */
   29473           0 : static CYTHON_INLINE int __Pyx_IterFinish(void) {
   29474           0 :     PyObject* exc_type;
   29475           0 :     __Pyx_PyThreadState_declare
   29476           0 :     __Pyx_PyThreadState_assign
   29477           0 :     exc_type = __Pyx_PyErr_CurrentExceptionType();
   29478           0 :     if (unlikely(exc_type)) {
   29479           0 :         if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
   29480             :             return -1;
   29481           0 :         __Pyx_PyErr_Clear();
   29482           0 :         return 0;
   29483             :     }
   29484             :     return 0;
   29485             : }
   29486             : 
   29487             : /* PyObjectCallNoArg */
   29488             : static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
   29489             :     PyObject *arg[2] = {NULL, NULL};
   29490             :     return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
   29491             : }
   29492             : 
   29493             : /* PyObjectGetMethod */
   29494             : static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
   29495             :     PyObject *attr;
   29496             : #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
   29497             :     __Pyx_TypeName type_name;
   29498             :     PyTypeObject *tp = Py_TYPE(obj);
   29499             :     PyObject *descr;
   29500             :     descrgetfunc f = NULL;
   29501             :     PyObject **dictptr, *dict;
   29502             :     int meth_found = 0;
   29503             :     assert (*method == NULL);
   29504             :     if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
   29505             :         attr = __Pyx_PyObject_GetAttrStr(obj, name);
   29506             :         goto try_unpack;
   29507             :     }
   29508             :     if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
   29509             :         return 0;
   29510             :     }
   29511             :     descr = _PyType_Lookup(tp, name);
   29512             :     if (likely(descr != NULL)) {
   29513             :         Py_INCREF(descr);
   29514             : #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
   29515             :         if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
   29516             : #elif PY_MAJOR_VERSION >= 3
   29517             :         #ifdef __Pyx_CyFunction_USED
   29518             :         if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
   29519             :         #else
   29520             :         if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
   29521             :         #endif
   29522             : #else
   29523             :         #ifdef __Pyx_CyFunction_USED
   29524             :         if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
   29525             :         #else
   29526             :         if (likely(PyFunction_Check(descr)))
   29527             :         #endif
   29528             : #endif
   29529             :         {
   29530             :             meth_found = 1;
   29531             :         } else {
   29532             :             f = Py_TYPE(descr)->tp_descr_get;
   29533             :             if (f != NULL && PyDescr_IsData(descr)) {
   29534             :                 attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
   29535             :                 Py_DECREF(descr);
   29536             :                 goto try_unpack;
   29537             :             }
   29538             :         }
   29539             :     }
   29540             :     dictptr = _PyObject_GetDictPtr(obj);
   29541             :     if (dictptr != NULL && (dict = *dictptr) != NULL) {
   29542             :         Py_INCREF(dict);
   29543             :         attr = __Pyx_PyDict_GetItemStr(dict, name);
   29544             :         if (attr != NULL) {
   29545             :             Py_INCREF(attr);
   29546             :             Py_DECREF(dict);
   29547             :             Py_XDECREF(descr);
   29548             :             goto try_unpack;
   29549             :         }
   29550             :         Py_DECREF(dict);
   29551             :     }
   29552             :     if (meth_found) {
   29553             :         *method = descr;
   29554             :         return 1;
   29555             :     }
   29556             :     if (f != NULL) {
   29557             :         attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
   29558             :         Py_DECREF(descr);
   29559             :         goto try_unpack;
   29560             :     }
   29561             :     if (likely(descr != NULL)) {
   29562             :         *method = descr;
   29563             :         return 0;
   29564             :     }
   29565             :     type_name = __Pyx_PyType_GetName(tp);
   29566             :     PyErr_Format(PyExc_AttributeError,
   29567             : #if PY_MAJOR_VERSION >= 3
   29568             :                  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
   29569             :                  type_name, name);
   29570             : #else
   29571             :                  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
   29572             :                  type_name, PyString_AS_STRING(name));
   29573             : #endif
   29574             :     __Pyx_DECREF_TypeName(type_name);
   29575             :     return 0;
   29576             : #else
   29577             :     attr = __Pyx_PyObject_GetAttrStr(obj, name);
   29578             :     goto try_unpack;
   29579             : #endif
   29580             : try_unpack:
   29581             : #if CYTHON_UNPACK_METHODS
   29582             :     if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
   29583             :         PyObject *function = PyMethod_GET_FUNCTION(attr);
   29584             :         Py_INCREF(function);
   29585             :         Py_DECREF(attr);
   29586             :         *method = function;
   29587             :         return 1;
   29588             :     }
   29589             : #endif
   29590             :     *method = attr;
   29591             :     return 0;
   29592             : }
   29593             : 
   29594             : /* PyObjectCallMethod0 */
   29595             : static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
   29596             :     PyObject *method = NULL, *result = NULL;
   29597             :     int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
   29598             :     if (likely(is_method)) {
   29599             :         result = __Pyx_PyObject_CallOneArg(method, obj);
   29600             :         Py_DECREF(method);
   29601             :         return result;
   29602             :     }
   29603             :     if (unlikely(!method)) goto bad;
   29604             :     result = __Pyx_PyObject_CallNoArg(method);
   29605             :     Py_DECREF(method);
   29606             : bad:
   29607             :     return result;
   29608             : }
   29609             : 
   29610             : /* UnpackItemEndCheck */
   29611           0 : static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
   29612           0 :     if (unlikely(retval)) {
   29613           0 :         Py_DECREF(retval);
   29614           0 :         __Pyx_RaiseTooManyValuesError(expected);
   29615           0 :         return -1;
   29616             :     }
   29617           0 :     return __Pyx_IterFinish();
   29618             : }
   29619             : 
   29620             : /* UnpackTupleError */
   29621           0 : static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
   29622           0 :     if (t == Py_None) {
   29623           0 :       __Pyx_RaiseNoneNotIterableError();
   29624           0 :     } else if (PyTuple_GET_SIZE(t) < index) {
   29625           0 :       __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
   29626             :     } else {
   29627           0 :       __Pyx_RaiseTooManyValuesError(index);
   29628             :     }
   29629           0 : }
   29630             : 
   29631             : /* UnpackTuple2 */
   29632           0 : static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
   29633             :         PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
   29634           0 :     PyObject *value1 = NULL, *value2 = NULL;
   29635             : #if CYTHON_COMPILING_IN_PYPY
   29636             :     value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
   29637             :     value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
   29638             : #else
   29639           0 :     value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
   29640           0 :     value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
   29641             : #endif
   29642           0 :     if (decref_tuple) {
   29643           0 :         Py_DECREF(tuple);
   29644             :     }
   29645           0 :     *pvalue1 = value1;
   29646           0 :     *pvalue2 = value2;
   29647           0 :     return 0;
   29648             : #if CYTHON_COMPILING_IN_PYPY
   29649             : bad:
   29650             :     Py_XDECREF(value1);
   29651             :     Py_XDECREF(value2);
   29652             :     if (decref_tuple) { Py_XDECREF(tuple); }
   29653             :     return -1;
   29654             : #endif
   29655             : }
   29656           0 : static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
   29657             :                                        int has_known_size, int decref_tuple) {
   29658           0 :     Py_ssize_t index;
   29659           0 :     PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
   29660           0 :     iternextfunc iternext;
   29661           0 :     iter = PyObject_GetIter(tuple);
   29662           0 :     if (unlikely(!iter)) goto bad;
   29663           0 :     if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
   29664           0 :     iternext = __Pyx_PyObject_GetIterNextFunc(iter);
   29665           0 :     value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
   29666           0 :     value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
   29667           0 :     if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
   29668           0 :     Py_DECREF(iter);
   29669           0 :     *pvalue1 = value1;
   29670           0 :     *pvalue2 = value2;
   29671           0 :     return 0;
   29672           0 : unpacking_failed:
   29673           0 :     if (!has_known_size && __Pyx_IterFinish() == 0)
   29674           0 :         __Pyx_RaiseNeedMoreValuesError(index);
   29675           0 : bad:
   29676           0 :     Py_XDECREF(iter);
   29677           0 :     Py_XDECREF(value1);
   29678           0 :     Py_XDECREF(value2);
   29679           0 :     if (decref_tuple) { Py_XDECREF(tuple); }
   29680             :     return -1;
   29681             : }
   29682             : 
   29683             : /* dict_iter */
   29684             : #if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
   29685             : #include <string.h>
   29686             : #endif
   29687           1 : static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
   29688             :                                                    Py_ssize_t* p_orig_length, int* p_source_is_dict) {
   29689           1 :     is_dict = is_dict || likely(PyDict_CheckExact(iterable));
   29690           1 :     *p_source_is_dict = is_dict;
   29691           1 :     if (is_dict) {
   29692             : #if !CYTHON_COMPILING_IN_PYPY
   29693           1 :         *p_orig_length = PyDict_Size(iterable);
   29694           1 :         Py_INCREF(iterable);
   29695           1 :         return iterable;
   29696             : #elif PY_MAJOR_VERSION >= 3
   29697             :         static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
   29698             :         PyObject **pp = NULL;
   29699             :         if (method_name) {
   29700             :             const char *name = PyUnicode_AsUTF8(method_name);
   29701             :             if (strcmp(name, "iteritems") == 0) pp = &py_items;
   29702             :             else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
   29703             :             else if (strcmp(name, "itervalues") == 0) pp = &py_values;
   29704             :             if (pp) {
   29705             :                 if (!*pp) {
   29706             :                     *pp = PyUnicode_FromString(name + 4);
   29707             :                     if (!*pp)
   29708             :                         return NULL;
   29709             :                 }
   29710             :                 method_name = *pp;
   29711             :             }
   29712             :         }
   29713             : #endif
   29714             :     }
   29715             :     *p_orig_length = 0;
   29716             :     if (method_name) {
   29717             :         PyObject* iter;
   29718             :         iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
   29719             :         if (!iterable)
   29720             :             return NULL;
   29721             : #if !CYTHON_COMPILING_IN_PYPY
   29722             :         if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
   29723             :             return iterable;
   29724             : #endif
   29725             :         iter = PyObject_GetIter(iterable);
   29726             :         Py_DECREF(iterable);
   29727             :         return iter;
   29728             :     }
   29729             :     return PyObject_GetIter(iterable);
   29730             : }
   29731           8 : static CYTHON_INLINE int __Pyx_dict_iter_next(
   29732             :         PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
   29733             :         PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
   29734           8 :     PyObject* next_item;
   29735             : #if !CYTHON_COMPILING_IN_PYPY
   29736           8 :     if (source_is_dict) {
   29737           8 :         PyObject *key, *value;
   29738           8 :         if (unlikely(orig_length != PyDict_Size(iter_obj))) {
   29739           0 :             PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
   29740           0 :             return -1;
   29741             :         }
   29742           8 :         if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
   29743             :             return 0;
   29744             :         }
   29745           7 :         if (pitem) {
   29746           0 :             PyObject* tuple = PyTuple_New(2);
   29747           0 :             if (unlikely(!tuple)) {
   29748             :                 return -1;
   29749             :             }
   29750           0 :             Py_INCREF(key);
   29751           0 :             Py_INCREF(value);
   29752           0 :             PyTuple_SET_ITEM(tuple, 0, key);
   29753           0 :             PyTuple_SET_ITEM(tuple, 1, value);
   29754           0 :             *pitem = tuple;
   29755             :         } else {
   29756           7 :             if (pkey) {
   29757           7 :                 Py_INCREF(key);
   29758           7 :                 *pkey = key;
   29759             :             }
   29760           7 :             if (pvalue) {
   29761           0 :                 Py_INCREF(value);
   29762           0 :                 *pvalue = value;
   29763             :             }
   29764             :         }
   29765           7 :         return 1;
   29766           0 :     } else if (PyTuple_CheckExact(iter_obj)) {
   29767           0 :         Py_ssize_t pos = *ppos;
   29768           0 :         if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
   29769           0 :         *ppos = pos + 1;
   29770           0 :         next_item = PyTuple_GET_ITEM(iter_obj, pos);
   29771           0 :         Py_INCREF(next_item);
   29772           0 :     } else if (PyList_CheckExact(iter_obj)) {
   29773           0 :         Py_ssize_t pos = *ppos;
   29774           0 :         if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
   29775           0 :         *ppos = pos + 1;
   29776           0 :         next_item = PyList_GET_ITEM(iter_obj, pos);
   29777           0 :         Py_INCREF(next_item);
   29778             :     } else
   29779             : #endif
   29780             :     {
   29781           0 :         next_item = PyIter_Next(iter_obj);
   29782           0 :         if (unlikely(!next_item)) {
   29783           0 :             return __Pyx_IterFinish();
   29784             :         }
   29785             :     }
   29786           0 :     if (pitem) {
   29787           0 :         *pitem = next_item;
   29788           0 :     } else if (pkey && pvalue) {
   29789           0 :         if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
   29790           0 :             return -1;
   29791           0 :     } else if (pkey) {
   29792           0 :         *pkey = next_item;
   29793             :     } else {
   29794           0 :         *pvalue = next_item;
   29795             :     }
   29796             :     return 1;
   29797             : }
   29798             : 
   29799             : /* UnpackUnboundCMethod */
   29800           0 : static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
   29801           0 :     PyObject *result;
   29802           0 :     PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
   29803           0 :     if (unlikely(!selfless_args)) return NULL;
   29804           0 :     result = PyObject_Call(method, selfless_args, kwargs);
   29805           0 :     Py_DECREF(selfless_args);
   29806             :     return result;
   29807             : }
   29808             : static PyMethodDef __Pyx_UnboundCMethod_Def = {
   29809             :      "CythonUnboundCMethod",
   29810             :      __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
   29811             :      METH_VARARGS | METH_KEYWORDS,
   29812             :      NULL
   29813             : };
   29814           0 : static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
   29815           0 :     PyObject *method;
   29816           0 :     method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
   29817           0 :     if (unlikely(!method))
   29818             :         return -1;
   29819           0 :     target->method = method;
   29820             : #if CYTHON_COMPILING_IN_CPYTHON
   29821             :     #if PY_MAJOR_VERSION >= 3
   29822           0 :     if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
   29823             :     #else
   29824             :     if (likely(!__Pyx_CyOrPyCFunction_Check(method)))
   29825             :     #endif
   29826             :     {
   29827           0 :         PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
   29828           0 :         target->func = descr->d_method->ml_meth;
   29829           0 :         target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
   29830             :     } else
   29831             : #endif
   29832             : #if CYTHON_COMPILING_IN_PYPY
   29833             : #else
   29834           0 :     if (PyCFunction_Check(method))
   29835             : #endif
   29836             :     {
   29837           0 :         PyObject *self;
   29838           0 :         int self_found;
   29839             : #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
   29840             :         self = PyObject_GetAttrString(method, "__self__");
   29841             :         if (!self) {
   29842             :             PyErr_Clear();
   29843             :         }
   29844             : #else
   29845           0 :         self = PyCFunction_GET_SELF(method);
   29846             : #endif
   29847           0 :         self_found = (self && self != Py_None);
   29848             : #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
   29849             :         Py_XDECREF(self);
   29850             : #endif
   29851           0 :         if (self_found) {
   29852           0 :             PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
   29853           0 :             if (unlikely(!unbound_method)) return -1;
   29854           0 :             Py_DECREF(method);
   29855           0 :             target->method = unbound_method;
   29856             :         }
   29857             :     }
   29858             :     return 0;
   29859             : }
   29860             : 
   29861             : /* CallUnboundCMethod0 */
   29862           0 : static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
   29863           0 :     PyObject *args, *result = NULL;
   29864           0 :     if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
   29865             : #if CYTHON_ASSUME_SAFE_MACROS
   29866           0 :     args = PyTuple_New(1);
   29867           0 :     if (unlikely(!args)) goto bad;
   29868           0 :     Py_INCREF(self);
   29869           0 :     PyTuple_SET_ITEM(args, 0, self);
   29870             : #else
   29871             :     args = PyTuple_Pack(1, self);
   29872             :     if (unlikely(!args)) goto bad;
   29873             : #endif
   29874           0 :     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
   29875           0 :     Py_DECREF(args);
   29876             : bad:
   29877             :     return result;
   29878             : }
   29879             : 
   29880             : /* py_dict_values */
   29881           0 : static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
   29882           0 :     if (PY_MAJOR_VERSION >= 3)
   29883           0 :         return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
   29884             :     else
   29885             :         return PyDict_Values(d);
   29886             : }
   29887             : 
   29888             : /* CallUnboundCMethod1 */
   29889             : #if CYTHON_COMPILING_IN_CPYTHON
   29890             : static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
   29891             :     if (likely(cfunc->func)) {
   29892             :         int flag = cfunc->flag;
   29893             :         if (flag == METH_O) {
   29894             :             return (*(cfunc->func))(self, arg);
   29895             :         } else if ((PY_VERSION_HEX >= 0x030600B1) && flag == METH_FASTCALL) {
   29896             :             #if PY_VERSION_HEX >= 0x030700A0
   29897             :                 return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
   29898             :             #else
   29899             :                 return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
   29900             :             #endif
   29901             :         } else if ((PY_VERSION_HEX >= 0x030700A0) && flag == (METH_FASTCALL | METH_KEYWORDS)) {
   29902             :             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
   29903             :         }
   29904             :     }
   29905             :     return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
   29906             : }
   29907             : #endif
   29908             : static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
   29909             :     PyObject *args, *result = NULL;
   29910             :     if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
   29911             : #if CYTHON_COMPILING_IN_CPYTHON
   29912             :     if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
   29913             :         args = PyTuple_New(1);
   29914             :         if (unlikely(!args)) goto bad;
   29915             :         Py_INCREF(arg);
   29916             :         PyTuple_SET_ITEM(args, 0, arg);
   29917             :         if (cfunc->flag & METH_KEYWORDS)
   29918             :             result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
   29919             :         else
   29920             :             result = (*cfunc->func)(self, args);
   29921             :     } else {
   29922             :         args = PyTuple_New(2);
   29923             :         if (unlikely(!args)) goto bad;
   29924             :         Py_INCREF(self);
   29925             :         PyTuple_SET_ITEM(args, 0, self);
   29926             :         Py_INCREF(arg);
   29927             :         PyTuple_SET_ITEM(args, 1, arg);
   29928             :         result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
   29929             :     }
   29930             : #else
   29931             :     args = PyTuple_Pack(2, self, arg);
   29932             :     if (unlikely(!args)) goto bad;
   29933             :     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
   29934             : #endif
   29935             : bad:
   29936             :     Py_XDECREF(args);
   29937             :     return result;
   29938             : }
   29939             : 
   29940             : /* CallUnboundCMethod2 */
   29941             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
   29942             : static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
   29943             :     if (likely(cfunc->func)) {
   29944             :         PyObject *args[2] = {arg1, arg2};
   29945             :         if (cfunc->flag == METH_FASTCALL) {
   29946             :             #if PY_VERSION_HEX >= 0x030700A0
   29947             :             return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
   29948             :             #else
   29949             :             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
   29950             :             #endif
   29951             :         }
   29952             :         #if PY_VERSION_HEX >= 0x030700A0
   29953             :         if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
   29954             :             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
   29955             :         #endif
   29956             :     }
   29957             :     return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
   29958             : }
   29959             : #endif
   29960             : static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
   29961             :     PyObject *args, *result = NULL;
   29962             :     if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
   29963             : #if CYTHON_COMPILING_IN_CPYTHON
   29964             :     if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
   29965             :         args = PyTuple_New(2);
   29966             :         if (unlikely(!args)) goto bad;
   29967             :         Py_INCREF(arg1);
   29968             :         PyTuple_SET_ITEM(args, 0, arg1);
   29969             :         Py_INCREF(arg2);
   29970             :         PyTuple_SET_ITEM(args, 1, arg2);
   29971             :         if (cfunc->flag & METH_KEYWORDS)
   29972             :             result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
   29973             :         else
   29974             :             result = (*cfunc->func)(self, args);
   29975             :     } else {
   29976             :         args = PyTuple_New(3);
   29977             :         if (unlikely(!args)) goto bad;
   29978             :         Py_INCREF(self);
   29979             :         PyTuple_SET_ITEM(args, 0, self);
   29980             :         Py_INCREF(arg1);
   29981             :         PyTuple_SET_ITEM(args, 1, arg1);
   29982             :         Py_INCREF(arg2);
   29983             :         PyTuple_SET_ITEM(args, 2, arg2);
   29984             :         result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
   29985             :     }
   29986             : #else
   29987             :     args = PyTuple_Pack(3, self, arg1, arg2);
   29988             :     if (unlikely(!args)) goto bad;
   29989             :     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
   29990             : #endif
   29991             : bad:
   29992             :     Py_XDECREF(args);
   29993             :     return result;
   29994             : }
   29995             : 
   29996             : /* dict_getitem_default */
   29997         134 : static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
   29998         134 :     PyObject* value;
   29999             : #if PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
   30000         134 :     value = PyDict_GetItemWithError(d, key);
   30001         134 :     if (unlikely(!value)) {
   30002           0 :         if (unlikely(PyErr_Occurred()))
   30003             :             return NULL;
   30004             :         value = default_value;
   30005             :     }
   30006         134 :     Py_INCREF(value);
   30007             :     if ((1));
   30008             : #else
   30009             :     if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
   30010             :         value = PyDict_GetItem(d, key);
   30011             :         if (unlikely(!value)) {
   30012             :             value = default_value;
   30013             :         }
   30014             :         Py_INCREF(value);
   30015             :     }
   30016             : #endif
   30017             :     else {
   30018             :         if (default_value == Py_None)
   30019             :             value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key);
   30020             :         else
   30021             :             value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value);
   30022             :     }
   30023             :     return value;
   30024             : }
   30025             : 
   30026             : /* PyObject_GenericGetAttrNoDict */
   30027             : #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
   30028             : static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
   30029             :     __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
   30030             :     PyErr_Format(PyExc_AttributeError,
   30031             : #if PY_MAJOR_VERSION >= 3
   30032             :                  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
   30033             :                  type_name, attr_name);
   30034             : #else
   30035             :                  "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
   30036             :                  type_name, PyString_AS_STRING(attr_name));
   30037             : #endif
   30038             :     __Pyx_DECREF_TypeName(type_name);
   30039             :     return NULL;
   30040             : }
   30041             : static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
   30042             :     PyObject *descr;
   30043             :     PyTypeObject *tp = Py_TYPE(obj);
   30044             :     if (unlikely(!PyString_Check(attr_name))) {
   30045             :         return PyObject_GenericGetAttr(obj, attr_name);
   30046             :     }
   30047             :     assert(!tp->tp_dictoffset);
   30048             :     descr = _PyType_Lookup(tp, attr_name);
   30049             :     if (unlikely(!descr)) {
   30050             :         return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
   30051             :     }
   30052             :     Py_INCREF(descr);
   30053             :     #if PY_MAJOR_VERSION < 3
   30054             :     if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
   30055             :     #endif
   30056             :     {
   30057             :         descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
   30058             :         if (unlikely(f)) {
   30059             :             PyObject *res = f(descr, obj, (PyObject *)tp);
   30060             :             Py_DECREF(descr);
   30061             :             return res;
   30062             :         }
   30063             :     }
   30064             :     return descr;
   30065             : }
   30066             : #endif
   30067             : 
   30068             : /* PyObject_GenericGetAttr */
   30069             : #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
   30070             : static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
   30071             :     if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
   30072             :         return PyObject_GenericGetAttr(obj, attr_name);
   30073             :     }
   30074             :     return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
   30075             : }
   30076             : #endif
   30077             : 
   30078             : /* FixUpExtensionType */
   30079             : #if CYTHON_USE_TYPE_SPECS
   30080             : static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
   30081             : #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
   30082             :     CYTHON_UNUSED_VAR(spec);
   30083             :     CYTHON_UNUSED_VAR(type);
   30084             : #else
   30085             :     const PyType_Slot *slot = spec->slots;
   30086             :     while (slot && slot->slot && slot->slot != Py_tp_members)
   30087             :         slot++;
   30088             :     if (slot && slot->slot == Py_tp_members) {
   30089             :         int changed = 0;
   30090             : #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
   30091             :         const
   30092             : #endif
   30093             :             PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
   30094             :         while (memb && memb->name) {
   30095             :             if (memb->name[0] == '_' && memb->name[1] == '_') {
   30096             : #if PY_VERSION_HEX < 0x030900b1
   30097             :                 if (strcmp(memb->name, "__weaklistoffset__") == 0) {
   30098             :                     assert(memb->type == T_PYSSIZET);
   30099             :                     assert(memb->flags == READONLY);
   30100             :                     type->tp_weaklistoffset = memb->offset;
   30101             :                     changed = 1;
   30102             :                 }
   30103             :                 else if (strcmp(memb->name, "__dictoffset__") == 0) {
   30104             :                     assert(memb->type == T_PYSSIZET);
   30105             :                     assert(memb->flags == READONLY);
   30106             :                     type->tp_dictoffset = memb->offset;
   30107             :                     changed = 1;
   30108             :                 }
   30109             : #if CYTHON_METH_FASTCALL
   30110             :                 else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
   30111             :                     assert(memb->type == T_PYSSIZET);
   30112             :                     assert(memb->flags == READONLY);
   30113             : #if PY_VERSION_HEX >= 0x030800b4
   30114             :                     type->tp_vectorcall_offset = memb->offset;
   30115             : #else
   30116             :                     type->tp_print = (printfunc) memb->offset;
   30117             : #endif
   30118             :                     changed = 1;
   30119             :                 }
   30120             : #endif
   30121             : #else
   30122             :                 if ((0));
   30123             : #endif
   30124             : #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
   30125             :                 else if (strcmp(memb->name, "__module__") == 0) {
   30126             :                     PyObject *descr;
   30127             :                     assert(memb->type == T_OBJECT);
   30128             :                     assert(memb->flags == 0 || memb->flags == READONLY);
   30129             :                     descr = PyDescr_NewMember(type, memb);
   30130             :                     if (unlikely(!descr))
   30131             :                         return -1;
   30132             :                     if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
   30133             :                         Py_DECREF(descr);
   30134             :                         return -1;
   30135             :                     }
   30136             :                     Py_DECREF(descr);
   30137             :                     changed = 1;
   30138             :                 }
   30139             : #endif
   30140             :             }
   30141             :             memb++;
   30142             :         }
   30143             :         if (changed)
   30144             :             PyType_Modified(type);
   30145             :     }
   30146             : #endif
   30147             :     return 0;
   30148             : }
   30149             : #endif
   30150             : 
   30151             : /* ValidateBasesTuple */
   30152             : #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
   30153           0 : static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
   30154           0 :     Py_ssize_t i, n;
   30155             : #if CYTHON_ASSUME_SAFE_MACROS
   30156           0 :     n = PyTuple_GET_SIZE(bases);
   30157             : #else
   30158             :     n = PyTuple_Size(bases);
   30159             :     if (n < 0) return -1;
   30160             : #endif
   30161           0 :     for (i = 1; i < n; i++)
   30162             :     {
   30163             : #if CYTHON_AVOID_BORROWED_REFS
   30164             :         PyObject *b0 = PySequence_GetItem(bases, i);
   30165             :         if (!b0) return -1;
   30166             : #elif CYTHON_ASSUME_SAFE_MACROS
   30167           0 :         PyObject *b0 = PyTuple_GET_ITEM(bases, i);
   30168             : #else
   30169             :         PyObject *b0 = PyTuple_GetItem(bases, i);
   30170             :         if (!b0) return -1;
   30171             : #endif
   30172           0 :         PyTypeObject *b;
   30173             : #if PY_MAJOR_VERSION < 3
   30174             :         if (PyClass_Check(b0))
   30175             :         {
   30176             :             PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
   30177             :                          PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
   30178             : #if CYTHON_AVOID_BORROWED_REFS
   30179             :             Py_DECREF(b0);
   30180             : #endif
   30181             :             return -1;
   30182             :         }
   30183             : #endif
   30184           0 :         b = (PyTypeObject*) b0;
   30185           0 :         if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
   30186             :         {
   30187           0 :             __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
   30188           0 :             PyErr_Format(PyExc_TypeError,
   30189             :                 "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
   30190           0 :             __Pyx_DECREF_TypeName(b_name);
   30191             : #if CYTHON_AVOID_BORROWED_REFS
   30192             :             Py_DECREF(b0);
   30193             : #endif
   30194           0 :             return -1;
   30195             :         }
   30196           0 :         if (dictoffset == 0)
   30197             :         {
   30198           0 :             Py_ssize_t b_dictoffset = 0;
   30199             : #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
   30200           0 :             b_dictoffset = b->tp_dictoffset;
   30201             : #else
   30202             :             PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
   30203             :             if (!py_b_dictoffset) goto dictoffset_return;
   30204             :             b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
   30205             :             Py_DECREF(py_b_dictoffset);
   30206             :             if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
   30207             : #endif
   30208           0 :             if (b_dictoffset) {
   30209             :                 {
   30210           0 :                     __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
   30211           0 :                     PyErr_Format(PyExc_TypeError,
   30212             :                         "extension type '%.200s' has no __dict__ slot, "
   30213             :                         "but base type '" __Pyx_FMT_TYPENAME "' has: "
   30214             :                         "either add 'cdef dict __dict__' to the extension type "
   30215             :                         "or add '__slots__ = [...]' to the base type",
   30216             :                         type_name, b_name);
   30217           0 :                     __Pyx_DECREF_TypeName(b_name);
   30218             :                 }
   30219             : #if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
   30220             :               dictoffset_return:
   30221             : #endif
   30222             : #if CYTHON_AVOID_BORROWED_REFS
   30223             :                 Py_DECREF(b0);
   30224             : #endif
   30225           0 :                 return -1;
   30226             :             }
   30227             :         }
   30228             : #if CYTHON_AVOID_BORROWED_REFS
   30229             :         Py_DECREF(b0);
   30230             : #endif
   30231             :     }
   30232             :     return 0;
   30233             : }
   30234             : #endif
   30235             : 
   30236             : /* PyType_Ready */
   30237           4 : static int __Pyx_PyType_Ready(PyTypeObject *t) {
   30238             : #if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
   30239             :     (void)__Pyx_PyObject_CallMethod0;
   30240             : #if CYTHON_USE_TYPE_SPECS
   30241             :     (void)__Pyx_validate_bases_tuple;
   30242             : #endif
   30243             :     return PyType_Ready(t);
   30244             : #else
   30245           4 :     int r;
   30246           4 :     PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
   30247           4 :     if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
   30248             :         return -1;
   30249             : #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
   30250             :     {
   30251           4 :         int gc_was_enabled;
   30252             :     #if PY_VERSION_HEX >= 0x030A00b1
   30253           4 :         gc_was_enabled = PyGC_Disable();
   30254           4 :         (void)__Pyx_PyObject_CallMethod0;
   30255             :     #else
   30256             :         PyObject *ret, *py_status;
   30257             :         PyObject *gc = NULL;
   30258             :         #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
   30259             :         gc = PyImport_GetModule(__pyx_kp_u_gc);
   30260             :         #endif
   30261             :         if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
   30262             :         if (unlikely(!gc)) return -1;
   30263             :         py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
   30264             :         if (unlikely(!py_status)) {
   30265             :             Py_DECREF(gc);
   30266             :             return -1;
   30267             :         }
   30268             :         gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
   30269             :         Py_DECREF(py_status);
   30270             :         if (gc_was_enabled > 0) {
   30271             :             ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
   30272             :             if (unlikely(!ret)) {
   30273             :                 Py_DECREF(gc);
   30274             :                 return -1;
   30275             :             }
   30276             :             Py_DECREF(ret);
   30277             :         } else if (unlikely(gc_was_enabled == -1)) {
   30278             :             Py_DECREF(gc);
   30279             :             return -1;
   30280             :         }
   30281             :     #endif
   30282           4 :         t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
   30283             : #if PY_VERSION_HEX >= 0x030A0000
   30284           4 :         t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
   30285             : #endif
   30286             : #else
   30287             :         (void)__Pyx_PyObject_CallMethod0;
   30288             : #endif
   30289           4 :     r = PyType_Ready(t);
   30290             : #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
   30291           4 :         t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
   30292             :     #if PY_VERSION_HEX >= 0x030A00b1
   30293           4 :         if (gc_was_enabled)
   30294           4 :             PyGC_Enable();
   30295             :     #else
   30296             :         if (gc_was_enabled) {
   30297             :             PyObject *tp, *v, *tb;
   30298             :             PyErr_Fetch(&tp, &v, &tb);
   30299             :             ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
   30300             :             if (likely(ret || r == -1)) {
   30301             :                 Py_XDECREF(ret);
   30302             :                 PyErr_Restore(tp, v, tb);
   30303             :             } else {
   30304             :                 Py_XDECREF(tp);
   30305             :                 Py_XDECREF(v);
   30306             :                 Py_XDECREF(tb);
   30307             :                 r = -1;
   30308             :             }
   30309             :         }
   30310             :         Py_DECREF(gc);
   30311             :     #endif
   30312             :     }
   30313             : #endif
   30314             :     return r;
   30315             : #endif
   30316             : }
   30317             : 
   30318             : /* SetVTable */
   30319           3 : static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
   30320           3 :     PyObject *ob = PyCapsule_New(vtable, 0, 0);
   30321           3 :     if (unlikely(!ob))
   30322           0 :         goto bad;
   30323             : #if CYTHON_COMPILING_IN_LIMITED_API
   30324             :     if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
   30325             : #else
   30326           3 :     if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
   30327             : #endif
   30328           0 :         goto bad;
   30329           3 :     Py_DECREF(ob);
   30330             :     return 0;
   30331           0 : bad:
   30332           0 :     Py_XDECREF(ob);
   30333           0 :     return -1;
   30334             : }
   30335             : 
   30336             : /* GetVTable */
   30337           0 : static void* __Pyx_GetVtable(PyTypeObject *type) {
   30338           0 :     void* ptr;
   30339             : #if CYTHON_COMPILING_IN_LIMITED_API
   30340             :     PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
   30341             : #else
   30342           0 :     PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
   30343             : #endif
   30344           0 :     if (!ob)
   30345           0 :         goto bad;
   30346           0 :     ptr = PyCapsule_GetPointer(ob, 0);
   30347           0 :     if (!ptr && !PyErr_Occurred())
   30348           0 :         PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
   30349           0 :     Py_DECREF(ob);
   30350             :     return ptr;
   30351           0 : bad:
   30352           0 :     Py_XDECREF(ob);
   30353           0 :     return NULL;
   30354             : }
   30355             : 
   30356             : /* MergeVTables */
   30357             : #if !CYTHON_COMPILING_IN_LIMITED_API
   30358           3 : static int __Pyx_MergeVtables(PyTypeObject *type) {
   30359           3 :     int i;
   30360           3 :     void** base_vtables;
   30361           3 :     __Pyx_TypeName tp_base_name;
   30362           3 :     __Pyx_TypeName base_name;
   30363           3 :     void* unknown = (void*)-1;
   30364           3 :     PyObject* bases = type->tp_bases;
   30365           3 :     int base_depth = 0;
   30366             :     {
   30367           3 :         PyTypeObject* base = type->tp_base;
   30368           7 :         while (base) {
   30369           4 :             base_depth += 1;
   30370           4 :             base = base->tp_base;
   30371             :         }
   30372             :     }
   30373           3 :     base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
   30374           3 :     base_vtables[0] = unknown;
   30375           3 :     for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
   30376           0 :         void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
   30377           0 :         if (base_vtable != NULL) {
   30378           0 :             int j;
   30379           0 :             PyTypeObject* base = type->tp_base;
   30380           0 :             for (j = 0; j < base_depth; j++) {
   30381           0 :                 if (base_vtables[j] == unknown) {
   30382           0 :                     base_vtables[j] = __Pyx_GetVtable(base);
   30383           0 :                     base_vtables[j + 1] = unknown;
   30384             :                 }
   30385           0 :                 if (base_vtables[j] == base_vtable) {
   30386             :                     break;
   30387           0 :                 } else if (base_vtables[j] == NULL) {
   30388           0 :                     goto bad;
   30389             :                 }
   30390           0 :                 base = base->tp_base;
   30391             :             }
   30392             :         }
   30393             :     }
   30394           3 :     PyErr_Clear();
   30395           3 :     free(base_vtables);
   30396           3 :     return 0;
   30397           0 : bad:
   30398           0 :     tp_base_name = __Pyx_PyType_GetName(type->tp_base);
   30399           0 :     base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
   30400           0 :     PyErr_Format(PyExc_TypeError,
   30401             :         "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
   30402           0 :     __Pyx_DECREF_TypeName(tp_base_name);
   30403           0 :     __Pyx_DECREF_TypeName(base_name);
   30404           0 :     free(base_vtables);
   30405           0 :     return -1;
   30406             : }
   30407             : #endif
   30408             : 
   30409             : /* SetupReduce */
   30410             : #if !CYTHON_COMPILING_IN_LIMITED_API
   30411           2 : static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
   30412           2 :   int ret;
   30413           2 :   PyObject *name_attr;
   30414           2 :   name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name_2);
   30415           2 :   if (likely(name_attr)) {
   30416           2 :       ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
   30417             :   } else {
   30418             :       ret = -1;
   30419             :   }
   30420           2 :   if (unlikely(ret < 0)) {
   30421           0 :       PyErr_Clear();
   30422           0 :       ret = 0;
   30423             :   }
   30424           2 :   Py_XDECREF(name_attr);
   30425           2 :   return ret;
   30426             : }
   30427           4 : static int __Pyx_setup_reduce(PyObject* type_obj) {
   30428           4 :     int ret = 0;
   30429           4 :     PyObject *object_reduce = NULL;
   30430           4 :     PyObject *object_getstate = NULL;
   30431           4 :     PyObject *object_reduce_ex = NULL;
   30432           4 :     PyObject *reduce = NULL;
   30433           4 :     PyObject *reduce_ex = NULL;
   30434           4 :     PyObject *reduce_cython = NULL;
   30435           4 :     PyObject *setstate = NULL;
   30436           4 :     PyObject *setstate_cython = NULL;
   30437           4 :     PyObject *getstate = NULL;
   30438             : #if CYTHON_USE_PYTYPE_LOOKUP
   30439           4 :     getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
   30440             : #else
   30441             :     getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
   30442             :     if (!getstate && PyErr_Occurred()) {
   30443             :         goto __PYX_BAD;
   30444             :     }
   30445             : #endif
   30446           4 :     if (getstate) {
   30447             : #if CYTHON_USE_PYTYPE_LOOKUP
   30448           4 :         object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
   30449             : #else
   30450             :         object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
   30451             :         if (!object_getstate && PyErr_Occurred()) {
   30452             :             goto __PYX_BAD;
   30453             :         }
   30454             : #endif
   30455           4 :         if (object_getstate != getstate) {
   30456           0 :             goto __PYX_GOOD;
   30457             :         }
   30458             :     }
   30459             : #if CYTHON_USE_PYTYPE_LOOKUP
   30460           4 :     object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
   30461             : #else
   30462             :     object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
   30463             : #endif
   30464           4 :     reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
   30465           4 :     if (reduce_ex == object_reduce_ex) {
   30466             : #if CYTHON_USE_PYTYPE_LOOKUP
   30467           4 :         object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
   30468             : #else
   30469             :         object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
   30470             : #endif
   30471           4 :         reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
   30472           4 :         if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
   30473           4 :             reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
   30474           4 :             if (likely(reduce_cython)) {
   30475           4 :                 ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
   30476           4 :                 ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
   30477           0 :             } else if (reduce == object_reduce || PyErr_Occurred()) {
   30478           0 :                 goto __PYX_BAD;
   30479             :             }
   30480           4 :             setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate);
   30481           4 :             if (!setstate) PyErr_Clear();
   30482           4 :             if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
   30483           4 :                 setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
   30484           4 :                 if (likely(setstate_cython)) {
   30485           4 :                     ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
   30486           4 :                     ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
   30487           0 :                 } else if (!setstate || PyErr_Occurred()) {
   30488           0 :                     goto __PYX_BAD;
   30489             :                 }
   30490             :             }
   30491           4 :             PyType_Modified((PyTypeObject*)type_obj);
   30492             :         }
   30493             :     }
   30494           4 :     goto __PYX_GOOD;
   30495           0 : __PYX_BAD:
   30496           0 :     if (!PyErr_Occurred()) {
   30497           0 :         __Pyx_TypeName type_obj_name =
   30498             :             __Pyx_PyType_GetName((PyTypeObject*)type_obj);
   30499           0 :         PyErr_Format(PyExc_RuntimeError,
   30500             :             "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
   30501             :         __Pyx_DECREF_TypeName(type_obj_name);
   30502             :     }
   30503             :     ret = -1;
   30504           4 : __PYX_GOOD:
   30505             : #if !CYTHON_USE_PYTYPE_LOOKUP
   30506             :     Py_XDECREF(object_reduce);
   30507             :     Py_XDECREF(object_reduce_ex);
   30508             :     Py_XDECREF(object_getstate);
   30509             :     Py_XDECREF(getstate);
   30510             : #endif
   30511           4 :     Py_XDECREF(reduce);
   30512           4 :     Py_XDECREF(reduce_ex);
   30513           4 :     Py_XDECREF(reduce_cython);
   30514           4 :     Py_XDECREF(setstate);
   30515           4 :     Py_XDECREF(setstate_cython);
   30516           4 :     return ret;
   30517             : }
   30518             : #endif
   30519             : 
   30520             : /* TypeImport */
   30521             : #ifndef __PYX_HAVE_RT_ImportType_3_0_11
   30522             : #define __PYX_HAVE_RT_ImportType_3_0_11
   30523          16 : static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name,
   30524             :     size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size)
   30525             : {
   30526          16 :     PyObject *result = 0;
   30527          16 :     char warning[200];
   30528          16 :     Py_ssize_t basicsize;
   30529          16 :     Py_ssize_t itemsize;
   30530             : #if CYTHON_COMPILING_IN_LIMITED_API
   30531             :     PyObject *py_basicsize;
   30532             :     PyObject *py_itemsize;
   30533             : #endif
   30534          16 :     result = PyObject_GetAttrString(module, class_name);
   30535          16 :     if (!result)
   30536           0 :         goto bad;
   30537          16 :     if (!PyType_Check(result)) {
   30538           0 :         PyErr_Format(PyExc_TypeError,
   30539             :             "%.200s.%.200s is not a type object",
   30540             :             module_name, class_name);
   30541           0 :         goto bad;
   30542             :     }
   30543             : #if !CYTHON_COMPILING_IN_LIMITED_API
   30544          16 :     basicsize = ((PyTypeObject *)result)->tp_basicsize;
   30545          16 :     itemsize = ((PyTypeObject *)result)->tp_itemsize;
   30546             : #else
   30547             :     py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
   30548             :     if (!py_basicsize)
   30549             :         goto bad;
   30550             :     basicsize = PyLong_AsSsize_t(py_basicsize);
   30551             :     Py_DECREF(py_basicsize);
   30552             :     py_basicsize = 0;
   30553             :     if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
   30554             :         goto bad;
   30555             :     py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
   30556             :     if (!py_itemsize)
   30557             :         goto bad;
   30558             :     itemsize = PyLong_AsSsize_t(py_itemsize);
   30559             :     Py_DECREF(py_itemsize);
   30560             :     py_itemsize = 0;
   30561             :     if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
   30562             :         goto bad;
   30563             : #endif
   30564          16 :     if (itemsize) {
   30565           1 :         if (size % alignment) {
   30566           0 :             alignment = size % alignment;
   30567             :         }
   30568           1 :         if (itemsize < (Py_ssize_t)alignment)
   30569             :             itemsize = (Py_ssize_t)alignment;
   30570             :     }
   30571          16 :     if ((size_t)(basicsize + itemsize) < size) {
   30572           0 :         PyErr_Format(PyExc_ValueError,
   30573             :             "%.200s.%.200s size changed, may indicate binary incompatibility. "
   30574             :             "Expected %zd from C header, got %zd from PyObject",
   30575             :             module_name, class_name, size, basicsize+itemsize);
   30576           0 :         goto bad;
   30577             :     }
   30578          16 :     if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 &&
   30579           0 :             ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
   30580           0 :         PyErr_Format(PyExc_ValueError,
   30581             :             "%.200s.%.200s size changed, may indicate binary incompatibility. "
   30582             :             "Expected %zd from C header, got %zd-%zd from PyObject",
   30583             :             module_name, class_name, size, basicsize, basicsize+itemsize);
   30584           0 :         goto bad;
   30585             :     }
   30586          16 :     else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) {
   30587           0 :         PyOS_snprintf(warning, sizeof(warning),
   30588             :             "%s.%s size changed, may indicate binary incompatibility. "
   30589             :             "Expected %zd from C header, got %zd from PyObject",
   30590             :             module_name, class_name, size, basicsize);
   30591           0 :         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
   30592             :     }
   30593             :     return (PyTypeObject *)result;
   30594           0 : bad:
   30595           0 :     Py_XDECREF(result);
   30596           0 :     return NULL;
   30597             : }
   30598             : #endif
   30599             : 
   30600             : /* FetchSharedCythonModule */
   30601           2 : static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
   30602           2 :     return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
   30603             : }
   30604             : 
   30605             : /* FetchCommonType */
   30606           2 : static int __Pyx_VerifyCachedType(PyObject *cached_type,
   30607             :                                const char *name,
   30608             :                                Py_ssize_t basicsize,
   30609             :                                Py_ssize_t expected_basicsize) {
   30610           2 :     if (!PyType_Check(cached_type)) {
   30611           0 :         PyErr_Format(PyExc_TypeError,
   30612             :             "Shared Cython type %.200s is not a type object", name);
   30613           0 :         return -1;
   30614             :     }
   30615           2 :     if (basicsize != expected_basicsize) {
   30616           0 :         PyErr_Format(PyExc_TypeError,
   30617             :             "Shared Cython type %.200s has the wrong size, try recompiling",
   30618             :             name);
   30619           0 :         return -1;
   30620             :     }
   30621             :     return 0;
   30622             : }
   30623             : #if !CYTHON_USE_TYPE_SPECS
   30624           2 : static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
   30625           2 :     PyObject* abi_module;
   30626           2 :     const char* object_name;
   30627           2 :     PyTypeObject *cached_type = NULL;
   30628           2 :     abi_module = __Pyx_FetchSharedCythonABIModule();
   30629           2 :     if (!abi_module) return NULL;
   30630           2 :     object_name = strrchr(type->tp_name, '.');
   30631           2 :     object_name = object_name ? object_name+1 : type->tp_name;
   30632           2 :     cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
   30633           2 :     if (cached_type) {
   30634           2 :         if (__Pyx_VerifyCachedType(
   30635             :               (PyObject *)cached_type,
   30636             :               object_name,
   30637             :               cached_type->tp_basicsize,
   30638             :               type->tp_basicsize) < 0) {
   30639           0 :             goto bad;
   30640             :         }
   30641           2 :         goto done;
   30642             :     }
   30643           0 :     if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
   30644           0 :     PyErr_Clear();
   30645           0 :     if (PyType_Ready(type) < 0) goto bad;
   30646           0 :     if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
   30647           0 :         goto bad;
   30648           0 :     Py_INCREF(type);
   30649             :     cached_type = type;
   30650           2 : done:
   30651           2 :     Py_DECREF(abi_module);
   30652             :     return cached_type;
   30653           0 : bad:
   30654           0 :     Py_XDECREF(cached_type);
   30655           0 :     cached_type = NULL;
   30656           0 :     goto done;
   30657             : }
   30658             : #else
   30659             : static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
   30660             :     PyObject *abi_module, *cached_type = NULL;
   30661             :     const char* object_name = strrchr(spec->name, '.');
   30662             :     object_name = object_name ? object_name+1 : spec->name;
   30663             :     abi_module = __Pyx_FetchSharedCythonABIModule();
   30664             :     if (!abi_module) return NULL;
   30665             :     cached_type = PyObject_GetAttrString(abi_module, object_name);
   30666             :     if (cached_type) {
   30667             :         Py_ssize_t basicsize;
   30668             : #if CYTHON_COMPILING_IN_LIMITED_API
   30669             :         PyObject *py_basicsize;
   30670             :         py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
   30671             :         if (unlikely(!py_basicsize)) goto bad;
   30672             :         basicsize = PyLong_AsSsize_t(py_basicsize);
   30673             :         Py_DECREF(py_basicsize);
   30674             :         py_basicsize = 0;
   30675             :         if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
   30676             : #else
   30677             :         basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
   30678             : #endif
   30679             :         if (__Pyx_VerifyCachedType(
   30680             :               cached_type,
   30681             :               object_name,
   30682             :               basicsize,
   30683             :               spec->basicsize) < 0) {
   30684             :             goto bad;
   30685             :         }
   30686             :         goto done;
   30687             :     }
   30688             :     if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
   30689             :     PyErr_Clear();
   30690             :     CYTHON_UNUSED_VAR(module);
   30691             :     cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
   30692             :     if (unlikely(!cached_type)) goto bad;
   30693             :     if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
   30694             :     if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
   30695             : done:
   30696             :     Py_DECREF(abi_module);
   30697             :     assert(cached_type == NULL || PyType_Check(cached_type));
   30698             :     return (PyTypeObject *) cached_type;
   30699             : bad:
   30700             :     Py_XDECREF(cached_type);
   30701             :     cached_type = NULL;
   30702             :     goto done;
   30703             : }
   30704             : #endif
   30705             : 
   30706             : /* PyVectorcallFastCallDict */
   30707             : #if CYTHON_METH_FASTCALL
   30708           0 : static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
   30709             : {
   30710           0 :     PyObject *res = NULL;
   30711           0 :     PyObject *kwnames;
   30712           0 :     PyObject **newargs;
   30713           0 :     PyObject **kwvalues;
   30714           0 :     Py_ssize_t i, pos;
   30715           0 :     size_t j;
   30716           0 :     PyObject *key, *value;
   30717           0 :     unsigned long keys_are_strings;
   30718           0 :     Py_ssize_t nkw = PyDict_GET_SIZE(kw);
   30719           0 :     newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
   30720           0 :     if (unlikely(newargs == NULL)) {
   30721           0 :         PyErr_NoMemory();
   30722           0 :         return NULL;
   30723             :     }
   30724           0 :     for (j = 0; j < nargs; j++) newargs[j] = args[j];
   30725           0 :     kwnames = PyTuple_New(nkw);
   30726           0 :     if (unlikely(kwnames == NULL)) {
   30727           0 :         PyMem_Free(newargs);
   30728           0 :         return NULL;
   30729             :     }
   30730           0 :     kwvalues = newargs + nargs;
   30731           0 :     pos = i = 0;
   30732           0 :     keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
   30733           0 :     while (PyDict_Next(kw, &pos, &key, &value)) {
   30734           0 :         keys_are_strings &= Py_TYPE(key)->tp_flags;
   30735           0 :         Py_INCREF(key);
   30736           0 :         Py_INCREF(value);
   30737           0 :         PyTuple_SET_ITEM(kwnames, i, key);
   30738           0 :         kwvalues[i] = value;
   30739           0 :         i++;
   30740             :     }
   30741           0 :     if (unlikely(!keys_are_strings)) {
   30742           0 :         PyErr_SetString(PyExc_TypeError, "keywords must be strings");
   30743           0 :         goto cleanup;
   30744             :     }
   30745           0 :     res = vc(func, newargs, nargs, kwnames);
   30746           0 : cleanup:
   30747           0 :     Py_DECREF(kwnames);
   30748           0 :     for (i = 0; i < nkw; i++)
   30749           0 :         Py_DECREF(kwvalues[i]);
   30750           0 :     PyMem_Free(newargs);
   30751           0 :     return res;
   30752             : }
   30753           0 : static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
   30754             : {
   30755           0 :     if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
   30756           0 :         return vc(func, args, nargs, NULL);
   30757             :     }
   30758           0 :     return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
   30759             : }
   30760             : #endif
   30761             : 
   30762             : /* CythonFunctionShared */
   30763             : #if CYTHON_COMPILING_IN_LIMITED_API
   30764             : static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
   30765             :     if (__Pyx_CyFunction_Check(func)) {
   30766             :         return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
   30767             :     } else if (PyCFunction_Check(func)) {
   30768             :         return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
   30769             :     }
   30770             :     return 0;
   30771             : }
   30772             : #else
   30773             : static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
   30774             :     return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
   30775             : }
   30776             : #endif
   30777           0 : static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
   30778             : #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
   30779             :     __Pyx_Py_XDECREF_SET(
   30780             :         __Pyx_CyFunction_GetClassObj(f),
   30781             :             ((classobj) ? __Pyx_NewRef(classobj) : NULL));
   30782             : #else
   30783           0 :     __Pyx_Py_XDECREF_SET(
   30784             :         ((PyCMethodObject *) (f))->mm_class,
   30785             :         (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
   30786             : #endif
   30787           0 : }
   30788             : static PyObject *
   30789           0 : __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
   30790             : {
   30791           0 :     CYTHON_UNUSED_VAR(closure);
   30792           0 :     if (unlikely(op->func_doc == NULL)) {
   30793             : #if CYTHON_COMPILING_IN_LIMITED_API
   30794             :         op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
   30795             :         if (unlikely(!op->func_doc)) return NULL;
   30796             : #else
   30797           0 :         if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
   30798             : #if PY_MAJOR_VERSION >= 3
   30799           0 :             op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
   30800             : #else
   30801             :             op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
   30802             : #endif
   30803           0 :             if (unlikely(op->func_doc == NULL))
   30804             :                 return NULL;
   30805             :         } else {
   30806           0 :             Py_INCREF(Py_None);
   30807           0 :             return Py_None;
   30808             :         }
   30809             : #endif
   30810             :     }
   30811           0 :     Py_INCREF(op->func_doc);
   30812             :     return op->func_doc;
   30813             : }
   30814             : static int
   30815           0 : __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
   30816             : {
   30817           0 :     CYTHON_UNUSED_VAR(context);
   30818           0 :     if (value == NULL) {
   30819           0 :         value = Py_None;
   30820             :     }
   30821           0 :     Py_INCREF(value);
   30822           0 :     __Pyx_Py_XDECREF_SET(op->func_doc, value);
   30823           0 :     return 0;
   30824             : }
   30825             : static PyObject *
   30826           0 : __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
   30827             : {
   30828           0 :     CYTHON_UNUSED_VAR(context);
   30829           0 :     if (unlikely(op->func_name == NULL)) {
   30830             : #if CYTHON_COMPILING_IN_LIMITED_API
   30831             :         op->func_name = PyObject_GetAttrString(op->func, "__name__");
   30832             : #elif PY_MAJOR_VERSION >= 3
   30833           0 :         op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
   30834             : #else
   30835             :         op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
   30836             : #endif
   30837           0 :         if (unlikely(op->func_name == NULL))
   30838             :             return NULL;
   30839             :     }
   30840           0 :     Py_INCREF(op->func_name);
   30841             :     return op->func_name;
   30842             : }
   30843             : static int
   30844           0 : __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
   30845             : {
   30846           0 :     CYTHON_UNUSED_VAR(context);
   30847             : #if PY_MAJOR_VERSION >= 3
   30848           0 :     if (unlikely(value == NULL || !PyUnicode_Check(value)))
   30849             : #else
   30850             :     if (unlikely(value == NULL || !PyString_Check(value)))
   30851             : #endif
   30852             :     {
   30853           0 :         PyErr_SetString(PyExc_TypeError,
   30854             :                         "__name__ must be set to a string object");
   30855           0 :         return -1;
   30856             :     }
   30857           0 :     Py_INCREF(value);
   30858           0 :     __Pyx_Py_XDECREF_SET(op->func_name, value);
   30859           0 :     return 0;
   30860             : }
   30861             : static PyObject *
   30862           0 : __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
   30863             : {
   30864           0 :     CYTHON_UNUSED_VAR(context);
   30865           0 :     Py_INCREF(op->func_qualname);
   30866           0 :     return op->func_qualname;
   30867             : }
   30868             : static int
   30869           0 : __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
   30870             : {
   30871           0 :     CYTHON_UNUSED_VAR(context);
   30872             : #if PY_MAJOR_VERSION >= 3
   30873           0 :     if (unlikely(value == NULL || !PyUnicode_Check(value)))
   30874             : #else
   30875             :     if (unlikely(value == NULL || !PyString_Check(value)))
   30876             : #endif
   30877             :     {
   30878           0 :         PyErr_SetString(PyExc_TypeError,
   30879             :                         "__qualname__ must be set to a string object");
   30880           0 :         return -1;
   30881             :     }
   30882           0 :     Py_INCREF(value);
   30883           0 :     __Pyx_Py_XDECREF_SET(op->func_qualname, value);
   30884           0 :     return 0;
   30885             : }
   30886             : static PyObject *
   30887           0 : __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
   30888             : {
   30889           0 :     CYTHON_UNUSED_VAR(context);
   30890           0 :     if (unlikely(op->func_dict == NULL)) {
   30891           0 :         op->func_dict = PyDict_New();
   30892           0 :         if (unlikely(op->func_dict == NULL))
   30893             :             return NULL;
   30894             :     }
   30895           0 :     Py_INCREF(op->func_dict);
   30896             :     return op->func_dict;
   30897             : }
   30898             : static int
   30899           0 : __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
   30900             : {
   30901           0 :     CYTHON_UNUSED_VAR(context);
   30902           0 :     if (unlikely(value == NULL)) {
   30903           0 :         PyErr_SetString(PyExc_TypeError,
   30904             :                "function's dictionary may not be deleted");
   30905           0 :         return -1;
   30906             :     }
   30907           0 :     if (unlikely(!PyDict_Check(value))) {
   30908           0 :         PyErr_SetString(PyExc_TypeError,
   30909             :                "setting function's dictionary to a non-dict");
   30910           0 :         return -1;
   30911             :     }
   30912           0 :     Py_INCREF(value);
   30913           0 :     __Pyx_Py_XDECREF_SET(op->func_dict, value);
   30914           0 :     return 0;
   30915             : }
   30916             : static PyObject *
   30917           0 : __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
   30918             : {
   30919           0 :     CYTHON_UNUSED_VAR(context);
   30920           0 :     Py_INCREF(op->func_globals);
   30921           0 :     return op->func_globals;
   30922             : }
   30923             : static PyObject *
   30924           0 : __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
   30925             : {
   30926           0 :     CYTHON_UNUSED_VAR(op);
   30927           0 :     CYTHON_UNUSED_VAR(context);
   30928           0 :     Py_INCREF(Py_None);
   30929           0 :     return Py_None;
   30930             : }
   30931             : static PyObject *
   30932           0 : __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
   30933             : {
   30934           0 :     PyObject* result = (op->func_code) ? op->func_code : Py_None;
   30935           0 :     CYTHON_UNUSED_VAR(context);
   30936           0 :     Py_INCREF(result);
   30937           0 :     return result;
   30938             : }
   30939             : static int
   30940           0 : __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
   30941           0 :     int result = 0;
   30942           0 :     PyObject *res = op->defaults_getter((PyObject *) op);
   30943           0 :     if (unlikely(!res))
   30944             :         return -1;
   30945             :     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   30946           0 :     op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
   30947           0 :     Py_INCREF(op->defaults_tuple);
   30948           0 :     op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
   30949           0 :     Py_INCREF(op->defaults_kwdict);
   30950             :     #else
   30951             :     op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
   30952             :     if (unlikely(!op->defaults_tuple)) result = -1;
   30953             :     else {
   30954             :         op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
   30955             :         if (unlikely(!op->defaults_kwdict)) result = -1;
   30956             :     }
   30957             :     #endif
   30958           0 :     Py_DECREF(res);
   30959             :     return result;
   30960             : }
   30961             : static int
   30962           0 : __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
   30963           0 :     CYTHON_UNUSED_VAR(context);
   30964           0 :     if (!value) {
   30965             :         value = Py_None;
   30966           0 :     } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
   30967           0 :         PyErr_SetString(PyExc_TypeError,
   30968             :                         "__defaults__ must be set to a tuple object");
   30969           0 :         return -1;
   30970             :     }
   30971           0 :     PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
   30972             :                  "currently affect the values used in function calls", 1);
   30973           0 :     Py_INCREF(value);
   30974           0 :     __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
   30975           0 :     return 0;
   30976             : }
   30977             : static PyObject *
   30978           0 : __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
   30979           0 :     PyObject* result = op->defaults_tuple;
   30980           0 :     CYTHON_UNUSED_VAR(context);
   30981           0 :     if (unlikely(!result)) {
   30982           0 :         if (op->defaults_getter) {
   30983           0 :             if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
   30984           0 :             result = op->defaults_tuple;
   30985             :         } else {
   30986             :             result = Py_None;
   30987             :         }
   30988             :     }
   30989           0 :     Py_INCREF(result);
   30990             :     return result;
   30991             : }
   30992             : static int
   30993           0 : __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
   30994           0 :     CYTHON_UNUSED_VAR(context);
   30995           0 :     if (!value) {
   30996             :         value = Py_None;
   30997           0 :     } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
   30998           0 :         PyErr_SetString(PyExc_TypeError,
   30999             :                         "__kwdefaults__ must be set to a dict object");
   31000           0 :         return -1;
   31001             :     }
   31002           0 :     PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
   31003             :                  "currently affect the values used in function calls", 1);
   31004           0 :     Py_INCREF(value);
   31005           0 :     __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
   31006           0 :     return 0;
   31007             : }
   31008             : static PyObject *
   31009           0 : __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
   31010           0 :     PyObject* result = op->defaults_kwdict;
   31011           0 :     CYTHON_UNUSED_VAR(context);
   31012           0 :     if (unlikely(!result)) {
   31013           0 :         if (op->defaults_getter) {
   31014           0 :             if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
   31015           0 :             result = op->defaults_kwdict;
   31016             :         } else {
   31017             :             result = Py_None;
   31018             :         }
   31019             :     }
   31020           0 :     Py_INCREF(result);
   31021             :     return result;
   31022             : }
   31023             : static int
   31024           0 : __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
   31025           0 :     CYTHON_UNUSED_VAR(context);
   31026           0 :     if (!value || value == Py_None) {
   31027             :         value = NULL;
   31028           0 :     } else if (unlikely(!PyDict_Check(value))) {
   31029           0 :         PyErr_SetString(PyExc_TypeError,
   31030             :                         "__annotations__ must be set to a dict object");
   31031           0 :         return -1;
   31032             :     }
   31033           0 :     Py_XINCREF(value);
   31034           0 :     __Pyx_Py_XDECREF_SET(op->func_annotations, value);
   31035           0 :     return 0;
   31036             : }
   31037             : static PyObject *
   31038           0 : __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
   31039           0 :     PyObject* result = op->func_annotations;
   31040           0 :     CYTHON_UNUSED_VAR(context);
   31041           0 :     if (unlikely(!result)) {
   31042           0 :         result = PyDict_New();
   31043           0 :         if (unlikely(!result)) return NULL;
   31044           0 :         op->func_annotations = result;
   31045             :     }
   31046           0 :     Py_INCREF(result);
   31047             :     return result;
   31048             : }
   31049             : static PyObject *
   31050           0 : __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
   31051           0 :     int is_coroutine;
   31052           0 :     CYTHON_UNUSED_VAR(context);
   31053           0 :     if (op->func_is_coroutine) {
   31054           0 :         return __Pyx_NewRef(op->func_is_coroutine);
   31055             :     }
   31056           0 :     is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
   31057             : #if PY_VERSION_HEX >= 0x03050000
   31058           0 :     if (is_coroutine) {
   31059           0 :         PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
   31060           0 :         fromlist = PyList_New(1);
   31061           0 :         if (unlikely(!fromlist)) return NULL;
   31062           0 :         Py_INCREF(marker);
   31063             : #if CYTHON_ASSUME_SAFE_MACROS
   31064           0 :         PyList_SET_ITEM(fromlist, 0, marker);
   31065             : #else
   31066             :         if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
   31067             :             Py_DECREF(marker);
   31068             :             Py_DECREF(fromlist);
   31069             :             return NULL;
   31070             :         }
   31071             : #endif
   31072           0 :         module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
   31073           0 :         Py_DECREF(fromlist);
   31074           0 :         if (unlikely(!module)) goto ignore;
   31075           0 :         op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
   31076           0 :         Py_DECREF(module);
   31077           0 :         if (likely(op->func_is_coroutine)) {
   31078           0 :             return __Pyx_NewRef(op->func_is_coroutine);
   31079             :         }
   31080           0 : ignore:
   31081           0 :         PyErr_Clear();
   31082             :     }
   31083             : #endif
   31084           0 :     op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
   31085           0 :     return __Pyx_NewRef(op->func_is_coroutine);
   31086             : }
   31087             : #if CYTHON_COMPILING_IN_LIMITED_API
   31088             : static PyObject *
   31089             : __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
   31090             :     CYTHON_UNUSED_VAR(context);
   31091             :     return PyObject_GetAttrString(op->func, "__module__");
   31092             : }
   31093             : static int
   31094             : __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
   31095             :     CYTHON_UNUSED_VAR(context);
   31096             :     return PyObject_SetAttrString(op->func, "__module__", value);
   31097             : }
   31098             : #endif
   31099             : static PyGetSetDef __pyx_CyFunction_getsets[] = {
   31100             :     {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
   31101             :     {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
   31102             :     {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
   31103             :     {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
   31104             :     {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
   31105             :     {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
   31106             :     {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
   31107             :     {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
   31108             :     {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
   31109             :     {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
   31110             :     {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
   31111             :     {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
   31112             :     {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
   31113             :     {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
   31114             :     {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
   31115             :     {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
   31116             :     {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
   31117             :     {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
   31118             : #if CYTHON_COMPILING_IN_LIMITED_API
   31119             :     {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
   31120             : #endif
   31121             :     {0, 0, 0, 0, 0}
   31122             : };
   31123             : static PyMemberDef __pyx_CyFunction_members[] = {
   31124             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31125             :     {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
   31126             : #endif
   31127             : #if CYTHON_USE_TYPE_SPECS
   31128             :     {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
   31129             : #if CYTHON_METH_FASTCALL
   31130             : #if CYTHON_BACKPORT_VECTORCALL
   31131             :     {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
   31132             : #else
   31133             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31134             :     {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
   31135             : #endif
   31136             : #endif
   31137             : #endif
   31138             : #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
   31139             :     {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
   31140             : #else
   31141             :     {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
   31142             : #endif
   31143             : #endif
   31144             :     {0, 0, 0,  0, 0}
   31145             : };
   31146             : static PyObject *
   31147           0 : __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
   31148             : {
   31149           0 :     CYTHON_UNUSED_VAR(args);
   31150             : #if PY_MAJOR_VERSION >= 3
   31151           0 :     Py_INCREF(m->func_qualname);
   31152           0 :     return m->func_qualname;
   31153             : #else
   31154             :     return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
   31155             : #endif
   31156             : }
   31157             : static PyMethodDef __pyx_CyFunction_methods[] = {
   31158             :     {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
   31159             :     {0, 0, 0, 0}
   31160             : };
   31161             : #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
   31162             : #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
   31163             : #else
   31164             : #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
   31165             : #endif
   31166           9 : static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
   31167             :                                        PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
   31168             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31169           9 :     PyCFunctionObject *cf = (PyCFunctionObject*) op;
   31170             : #endif
   31171           9 :     if (unlikely(op == NULL))
   31172             :         return NULL;
   31173             : #if CYTHON_COMPILING_IN_LIMITED_API
   31174             :     op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
   31175             :     if (unlikely(!op->func)) return NULL;
   31176             : #endif
   31177           9 :     op->flags = flags;
   31178           9 :     __Pyx_CyFunction_weakreflist(op) = NULL;
   31179             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31180           9 :     cf->m_ml = ml;
   31181           9 :     cf->m_self = (PyObject *) op;
   31182             : #endif
   31183           9 :     Py_XINCREF(closure);
   31184           9 :     op->func_closure = closure;
   31185             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31186           9 :     Py_XINCREF(module);
   31187           9 :     cf->m_module = module;
   31188             : #endif
   31189           9 :     op->func_dict = NULL;
   31190           9 :     op->func_name = NULL;
   31191           9 :     Py_INCREF(qualname);
   31192           9 :     op->func_qualname = qualname;
   31193           9 :     op->func_doc = NULL;
   31194             : #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
   31195             :     op->func_classobj = NULL;
   31196             : #else
   31197           9 :     ((PyCMethodObject*)op)->mm_class = NULL;
   31198             : #endif
   31199           9 :     op->func_globals = globals;
   31200           9 :     Py_INCREF(op->func_globals);
   31201           9 :     Py_XINCREF(code);
   31202           9 :     op->func_code = code;
   31203           9 :     op->defaults_pyobjects = 0;
   31204           9 :     op->defaults_size = 0;
   31205           9 :     op->defaults = NULL;
   31206           9 :     op->defaults_tuple = NULL;
   31207           9 :     op->defaults_kwdict = NULL;
   31208           9 :     op->defaults_getter = NULL;
   31209           9 :     op->func_annotations = NULL;
   31210           9 :     op->func_is_coroutine = NULL;
   31211             : #if CYTHON_METH_FASTCALL
   31212           9 :     switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
   31213           0 :     case METH_NOARGS:
   31214           0 :         __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
   31215           0 :         break;
   31216           0 :     case METH_O:
   31217           0 :         __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
   31218           0 :         break;
   31219           0 :     case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
   31220           0 :         __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
   31221           0 :         break;
   31222           1 :     case METH_FASTCALL | METH_KEYWORDS:
   31223           1 :         __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
   31224           1 :         break;
   31225           8 :     case METH_VARARGS | METH_KEYWORDS:
   31226           8 :         __Pyx_CyFunction_func_vectorcall(op) = NULL;
   31227           8 :         break;
   31228           0 :     default:
   31229           0 :         PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
   31230           0 :         Py_DECREF(op);
   31231             :         return NULL;
   31232             :     }
   31233             : #endif
   31234             :     return (PyObject *) op;
   31235             : }
   31236             : static int
   31237           0 : __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
   31238             : {
   31239           0 :     Py_CLEAR(m->func_closure);
   31240             : #if CYTHON_COMPILING_IN_LIMITED_API
   31241             :     Py_CLEAR(m->func);
   31242             : #else
   31243           0 :     Py_CLEAR(((PyCFunctionObject*)m)->m_module);
   31244             : #endif
   31245           0 :     Py_CLEAR(m->func_dict);
   31246           0 :     Py_CLEAR(m->func_name);
   31247           0 :     Py_CLEAR(m->func_qualname);
   31248           0 :     Py_CLEAR(m->func_doc);
   31249           0 :     Py_CLEAR(m->func_globals);
   31250           0 :     Py_CLEAR(m->func_code);
   31251             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31252             : #if PY_VERSION_HEX < 0x030900B1
   31253             :     Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
   31254             : #else
   31255             :     {
   31256           0 :         PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
   31257           0 :         ((PyCMethodObject *) (m))->mm_class = NULL;
   31258           0 :         Py_XDECREF(cls);
   31259             :     }
   31260             : #endif
   31261             : #endif
   31262           0 :     Py_CLEAR(m->defaults_tuple);
   31263           0 :     Py_CLEAR(m->defaults_kwdict);
   31264           0 :     Py_CLEAR(m->func_annotations);
   31265           0 :     Py_CLEAR(m->func_is_coroutine);
   31266           0 :     if (m->defaults) {
   31267             :         PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
   31268             :         int i;
   31269           0 :         for (i = 0; i < m->defaults_pyobjects; i++)
   31270           0 :             Py_XDECREF(pydefaults[i]);
   31271           0 :         PyObject_Free(m->defaults);
   31272           0 :         m->defaults = NULL;
   31273             :     }
   31274           0 :     return 0;
   31275             : }
   31276           0 : static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
   31277             : {
   31278           0 :     if (__Pyx_CyFunction_weakreflist(m) != NULL)
   31279           0 :         PyObject_ClearWeakRefs((PyObject *) m);
   31280           0 :     __Pyx_CyFunction_clear(m);
   31281           0 :     __Pyx_PyHeapTypeObject_GC_Del(m);
   31282           0 : }
   31283           0 : static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
   31284             : {
   31285           0 :     PyObject_GC_UnTrack(m);
   31286           0 :     __Pyx__CyFunction_dealloc(m);
   31287           0 : }
   31288           0 : static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
   31289             : {
   31290           0 :     Py_VISIT(m->func_closure);
   31291             : #if CYTHON_COMPILING_IN_LIMITED_API
   31292             :     Py_VISIT(m->func);
   31293             : #else
   31294           0 :     Py_VISIT(((PyCFunctionObject*)m)->m_module);
   31295             : #endif
   31296           0 :     Py_VISIT(m->func_dict);
   31297           0 :     Py_VISIT(m->func_name);
   31298           0 :     Py_VISIT(m->func_qualname);
   31299           0 :     Py_VISIT(m->func_doc);
   31300           0 :     Py_VISIT(m->func_globals);
   31301           0 :     Py_VISIT(m->func_code);
   31302             : #if !CYTHON_COMPILING_IN_LIMITED_API
   31303           0 :     Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
   31304             : #endif
   31305           0 :     Py_VISIT(m->defaults_tuple);
   31306           0 :     Py_VISIT(m->defaults_kwdict);
   31307           0 :     Py_VISIT(m->func_is_coroutine);
   31308           0 :     if (m->defaults) {
   31309             :         PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
   31310             :         int i;
   31311           0 :         for (i = 0; i < m->defaults_pyobjects; i++)
   31312           0 :             Py_VISIT(pydefaults[i]);
   31313             :     }
   31314             :     return 0;
   31315             : }
   31316             : static PyObject*
   31317           0 : __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
   31318             : {
   31319             : #if PY_MAJOR_VERSION >= 3
   31320           0 :     return PyUnicode_FromFormat("<cyfunction %U at %p>",
   31321             :                                 op->func_qualname, (void *)op);
   31322             : #else
   31323             :     return PyString_FromFormat("<cyfunction %s at %p>",
   31324             :                                PyString_AsString(op->func_qualname), (void *)op);
   31325             : #endif
   31326             : }
   31327           0 : static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
   31328             : #if CYTHON_COMPILING_IN_LIMITED_API
   31329             :     PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
   31330             :     PyObject *py_name = NULL;
   31331             :     PyCFunction meth;
   31332             :     int flags;
   31333             :     meth = PyCFunction_GetFunction(f);
   31334             :     if (unlikely(!meth)) return NULL;
   31335             :     flags = PyCFunction_GetFlags(f);
   31336             :     if (unlikely(flags < 0)) return NULL;
   31337             : #else
   31338           0 :     PyCFunctionObject* f = (PyCFunctionObject*)func;
   31339           0 :     PyCFunction meth = f->m_ml->ml_meth;
   31340           0 :     int flags = f->m_ml->ml_flags;
   31341             : #endif
   31342           0 :     Py_ssize_t size;
   31343           0 :     switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
   31344           0 :     case METH_VARARGS:
   31345           0 :         if (likely(kw == NULL || PyDict_Size(kw) == 0))
   31346           0 :             return (*meth)(self, arg);
   31347             :         break;
   31348           0 :     case METH_VARARGS | METH_KEYWORDS:
   31349           0 :         return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
   31350           0 :     case METH_NOARGS:
   31351           0 :         if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
   31352             : #if CYTHON_ASSUME_SAFE_MACROS
   31353           0 :             size = PyTuple_GET_SIZE(arg);
   31354             : #else
   31355             :             size = PyTuple_Size(arg);
   31356             :             if (unlikely(size < 0)) return NULL;
   31357             : #endif
   31358           0 :             if (likely(size == 0))
   31359           0 :                 return (*meth)(self, NULL);
   31360             : #if CYTHON_COMPILING_IN_LIMITED_API
   31361             :             py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
   31362             :             if (!py_name) return NULL;
   31363             :             PyErr_Format(PyExc_TypeError,
   31364             :                 "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31365             :                 py_name, size);
   31366             :             Py_DECREF(py_name);
   31367             : #else
   31368           0 :             PyErr_Format(PyExc_TypeError,
   31369             :                 "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31370           0 :                 f->m_ml->ml_name, size);
   31371             : #endif
   31372           0 :             return NULL;
   31373             :         }
   31374             :         break;
   31375           0 :     case METH_O:
   31376           0 :         if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
   31377             : #if CYTHON_ASSUME_SAFE_MACROS
   31378           0 :             size = PyTuple_GET_SIZE(arg);
   31379             : #else
   31380             :             size = PyTuple_Size(arg);
   31381             :             if (unlikely(size < 0)) return NULL;
   31382             : #endif
   31383           0 :             if (likely(size == 1)) {
   31384           0 :                 PyObject *result, *arg0;
   31385             :                 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   31386           0 :                 arg0 = PyTuple_GET_ITEM(arg, 0);
   31387             :                 #else
   31388             :                 arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
   31389             :                 #endif
   31390           0 :                 result = (*meth)(self, arg0);
   31391             :                 #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
   31392             :                 Py_DECREF(arg0);
   31393             :                 #endif
   31394           0 :                 return result;
   31395             :             }
   31396             : #if CYTHON_COMPILING_IN_LIMITED_API
   31397             :             py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
   31398             :             if (!py_name) return NULL;
   31399             :             PyErr_Format(PyExc_TypeError,
   31400             :                 "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31401             :                 py_name, size);
   31402             :             Py_DECREF(py_name);
   31403             : #else
   31404           0 :             PyErr_Format(PyExc_TypeError,
   31405             :                 "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31406           0 :                 f->m_ml->ml_name, size);
   31407             : #endif
   31408           0 :             return NULL;
   31409             :         }
   31410             :         break;
   31411           0 :     default:
   31412           0 :         PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
   31413           0 :         return NULL;
   31414             :     }
   31415             : #if CYTHON_COMPILING_IN_LIMITED_API
   31416             :     py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
   31417             :     if (!py_name) return NULL;
   31418             :     PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
   31419             :                  py_name);
   31420             :     Py_DECREF(py_name);
   31421             : #else
   31422           0 :     PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
   31423           0 :                  f->m_ml->ml_name);
   31424             : #endif
   31425           0 :     return NULL;
   31426             : }
   31427           0 : static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
   31428           0 :     PyObject *self, *result;
   31429             : #if CYTHON_COMPILING_IN_LIMITED_API
   31430             :     self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
   31431             :     if (unlikely(!self) && PyErr_Occurred()) return NULL;
   31432             : #else
   31433           0 :     self = ((PyCFunctionObject*)func)->m_self;
   31434             : #endif
   31435           0 :     result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
   31436           0 :     return result;
   31437             : }
   31438           0 : static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
   31439           0 :     PyObject *result;
   31440           0 :     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
   31441             : #if CYTHON_METH_FASTCALL
   31442           0 :      __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
   31443           0 :     if (vc) {
   31444             : #if CYTHON_ASSUME_SAFE_MACROS
   31445           0 :         return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
   31446             : #else
   31447             :         (void) &__Pyx_PyVectorcall_FastCallDict;
   31448             :         return PyVectorcall_Call(func, args, kw);
   31449             : #endif
   31450             :     }
   31451             : #endif
   31452           0 :     if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
   31453           0 :         Py_ssize_t argc;
   31454           0 :         PyObject *new_args;
   31455           0 :         PyObject *self;
   31456             : #if CYTHON_ASSUME_SAFE_MACROS
   31457           0 :         argc = PyTuple_GET_SIZE(args);
   31458             : #else
   31459             :         argc = PyTuple_Size(args);
   31460             :         if (unlikely(!argc) < 0) return NULL;
   31461             : #endif
   31462           0 :         new_args = PyTuple_GetSlice(args, 1, argc);
   31463           0 :         if (unlikely(!new_args))
   31464             :             return NULL;
   31465           0 :         self = PyTuple_GetItem(args, 0);
   31466           0 :         if (unlikely(!self)) {
   31467           0 :             Py_DECREF(new_args);
   31468             : #if PY_MAJOR_VERSION > 2
   31469           0 :             PyErr_Format(PyExc_TypeError,
   31470             :                          "unbound method %.200S() needs an argument",
   31471             :                          cyfunc->func_qualname);
   31472             : #else
   31473             :             PyErr_SetString(PyExc_TypeError,
   31474             :                             "unbound method needs an argument");
   31475             : #endif
   31476           0 :             return NULL;
   31477             :         }
   31478           0 :         result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
   31479           0 :         Py_DECREF(new_args);
   31480             :     } else {
   31481           0 :         result = __Pyx_CyFunction_Call(func, args, kw);
   31482             :     }
   31483             :     return result;
   31484             : }
   31485             : #if CYTHON_METH_FASTCALL
   31486           1 : static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
   31487             : {
   31488           1 :     int ret = 0;
   31489           1 :     if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
   31490           0 :         if (unlikely(nargs < 1)) {
   31491           0 :             PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
   31492           0 :                          ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
   31493           0 :             return -1;
   31494             :         }
   31495             :         ret = 1;
   31496             :     }
   31497           1 :     if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
   31498           0 :         PyErr_Format(PyExc_TypeError,
   31499           0 :                      "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
   31500           0 :         return -1;
   31501             :     }
   31502             :     return ret;
   31503             : }
   31504           0 : static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
   31505             : {
   31506           0 :     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
   31507           0 :     PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
   31508             : #if CYTHON_BACKPORT_VECTORCALL
   31509             :     Py_ssize_t nargs = (Py_ssize_t)nargsf;
   31510             : #else
   31511           0 :     Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
   31512             : #endif
   31513           0 :     PyObject *self;
   31514           0 :     switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
   31515           0 :     case 1:
   31516           0 :         self = args[0];
   31517           0 :         args += 1;
   31518           0 :         nargs -= 1;
   31519           0 :         break;
   31520           0 :     case 0:
   31521           0 :         self = ((PyCFunctionObject*)cyfunc)->m_self;
   31522           0 :         break;
   31523             :     default:
   31524             :         return NULL;
   31525             :     }
   31526           0 :     if (unlikely(nargs != 0)) {
   31527           0 :         PyErr_Format(PyExc_TypeError,
   31528             :             "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31529             :             def->ml_name, nargs);
   31530           0 :         return NULL;
   31531             :     }
   31532           0 :     return def->ml_meth(self, NULL);
   31533             : }
   31534           0 : static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
   31535             : {
   31536           0 :     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
   31537           0 :     PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
   31538             : #if CYTHON_BACKPORT_VECTORCALL
   31539             :     Py_ssize_t nargs = (Py_ssize_t)nargsf;
   31540             : #else
   31541           0 :     Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
   31542             : #endif
   31543           0 :     PyObject *self;
   31544           0 :     switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
   31545           0 :     case 1:
   31546           0 :         self = args[0];
   31547           0 :         args += 1;
   31548           0 :         nargs -= 1;
   31549           0 :         break;
   31550           0 :     case 0:
   31551           0 :         self = ((PyCFunctionObject*)cyfunc)->m_self;
   31552           0 :         break;
   31553             :     default:
   31554             :         return NULL;
   31555             :     }
   31556           0 :     if (unlikely(nargs != 1)) {
   31557           0 :         PyErr_Format(PyExc_TypeError,
   31558             :             "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
   31559             :             def->ml_name, nargs);
   31560           0 :         return NULL;
   31561             :     }
   31562           0 :     return def->ml_meth(self, args[0]);
   31563             : }
   31564           1 : static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
   31565             : {
   31566           1 :     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
   31567           1 :     PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
   31568             : #if CYTHON_BACKPORT_VECTORCALL
   31569             :     Py_ssize_t nargs = (Py_ssize_t)nargsf;
   31570             : #else
   31571           1 :     Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
   31572             : #endif
   31573           1 :     PyObject *self;
   31574           1 :     switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
   31575           0 :     case 1:
   31576           0 :         self = args[0];
   31577           0 :         args += 1;
   31578           0 :         nargs -= 1;
   31579           0 :         break;
   31580           1 :     case 0:
   31581           1 :         self = ((PyCFunctionObject*)cyfunc)->m_self;
   31582           1 :         break;
   31583             :     default:
   31584             :         return NULL;
   31585             :     }
   31586           1 :     return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
   31587             : }
   31588           0 : static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
   31589             : {
   31590           0 :     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
   31591           0 :     PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
   31592           0 :     PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
   31593             : #if CYTHON_BACKPORT_VECTORCALL
   31594             :     Py_ssize_t nargs = (Py_ssize_t)nargsf;
   31595             : #else
   31596           0 :     Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
   31597             : #endif
   31598           0 :     PyObject *self;
   31599           0 :     switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
   31600           0 :     case 1:
   31601           0 :         self = args[0];
   31602           0 :         args += 1;
   31603           0 :         nargs -= 1;
   31604           0 :         break;
   31605           0 :     case 0:
   31606           0 :         self = ((PyCFunctionObject*)cyfunc)->m_self;
   31607           0 :         break;
   31608             :     default:
   31609             :         return NULL;
   31610             :     }
   31611           0 :     return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
   31612             : }
   31613             : #endif
   31614             : #if CYTHON_USE_TYPE_SPECS
   31615             : static PyType_Slot __pyx_CyFunctionType_slots[] = {
   31616             :     {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
   31617             :     {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
   31618             :     {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
   31619             :     {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
   31620             :     {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
   31621             :     {Py_tp_methods, (void *)__pyx_CyFunction_methods},
   31622             :     {Py_tp_members, (void *)__pyx_CyFunction_members},
   31623             :     {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
   31624             :     {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
   31625             :     {0, 0},
   31626             : };
   31627             : static PyType_Spec __pyx_CyFunctionType_spec = {
   31628             :     __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
   31629             :     sizeof(__pyx_CyFunctionObject),
   31630             :     0,
   31631             : #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
   31632             :     Py_TPFLAGS_METHOD_DESCRIPTOR |
   31633             : #endif
   31634             : #if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
   31635             :     _Py_TPFLAGS_HAVE_VECTORCALL |
   31636             : #endif
   31637             :     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
   31638             :     __pyx_CyFunctionType_slots
   31639             : };
   31640             : #else
   31641             : static PyTypeObject __pyx_CyFunctionType_type = {
   31642             :     PyVarObject_HEAD_INIT(0, 0)
   31643             :     __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
   31644             :     sizeof(__pyx_CyFunctionObject),
   31645             :     0,
   31646             :     (destructor) __Pyx_CyFunction_dealloc,
   31647             : #if !CYTHON_METH_FASTCALL
   31648             :     0,
   31649             : #elif CYTHON_BACKPORT_VECTORCALL
   31650             :     (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
   31651             : #else
   31652             :     offsetof(PyCFunctionObject, vectorcall),
   31653             : #endif
   31654             :     0,
   31655             :     0,
   31656             : #if PY_MAJOR_VERSION < 3
   31657             :     0,
   31658             : #else
   31659             :     0,
   31660             : #endif
   31661             :     (reprfunc) __Pyx_CyFunction_repr,
   31662             :     0,
   31663             :     0,
   31664             :     0,
   31665             :     0,
   31666             :     __Pyx_CyFunction_CallAsMethod,
   31667             :     0,
   31668             :     0,
   31669             :     0,
   31670             :     0,
   31671             : #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
   31672             :     Py_TPFLAGS_METHOD_DESCRIPTOR |
   31673             : #endif
   31674             : #if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
   31675             :     _Py_TPFLAGS_HAVE_VECTORCALL |
   31676             : #endif
   31677             :     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
   31678             :     0,
   31679             :     (traverseproc) __Pyx_CyFunction_traverse,
   31680             :     (inquiry) __Pyx_CyFunction_clear,
   31681             :     0,
   31682             : #if PY_VERSION_HEX < 0x030500A0
   31683             :     offsetof(__pyx_CyFunctionObject, func_weakreflist),
   31684             : #else
   31685             :     offsetof(PyCFunctionObject, m_weakreflist),
   31686             : #endif
   31687             :     0,
   31688             :     0,
   31689             :     __pyx_CyFunction_methods,
   31690             :     __pyx_CyFunction_members,
   31691             :     __pyx_CyFunction_getsets,
   31692             :     0,
   31693             :     0,
   31694             :     __Pyx_PyMethod_New,
   31695             :     0,
   31696             :     offsetof(__pyx_CyFunctionObject, func_dict),
   31697             :     0,
   31698             :     0,
   31699             :     0,
   31700             :     0,
   31701             :     0,
   31702             :     0,
   31703             :     0,
   31704             :     0,
   31705             :     0,
   31706             :     0,
   31707             :     0,
   31708             :     0,
   31709             : #if PY_VERSION_HEX >= 0x030400a1
   31710             :     0,
   31711             : #endif
   31712             : #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   31713             :     0,
   31714             : #endif
   31715             : #if __PYX_NEED_TP_PRINT_SLOT
   31716             :     0,
   31717             : #endif
   31718             : #if PY_VERSION_HEX >= 0x030C0000
   31719             :     0,
   31720             : #endif
   31721             : #if PY_VERSION_HEX >= 0x030d00A4
   31722             :     0,
   31723             : #endif
   31724             : #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   31725             :     0,
   31726             : #endif
   31727             : };
   31728             : #endif
   31729           1 : static int __pyx_CyFunction_init(PyObject *module) {
   31730             : #if CYTHON_USE_TYPE_SPECS
   31731             :     __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
   31732             : #else
   31733           1 :     CYTHON_UNUSED_VAR(module);
   31734           1 :     __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
   31735             : #endif
   31736           1 :     if (unlikely(__pyx_CyFunctionType == NULL)) {
   31737           0 :         return -1;
   31738             :     }
   31739             :     return 0;
   31740             : }
   31741           1 : static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
   31742           1 :     __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
   31743           1 :     m->defaults = PyObject_Malloc(size);
   31744           1 :     if (unlikely(!m->defaults))
   31745           0 :         return PyErr_NoMemory();
   31746           1 :     memset(m->defaults, 0, size);
   31747           1 :     m->defaults_pyobjects = pyobjects;
   31748           1 :     m->defaults_size = size;
   31749           1 :     return m->defaults;
   31750             : }
   31751           8 : static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
   31752           8 :     __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
   31753           8 :     m->defaults_tuple = tuple;
   31754           8 :     Py_INCREF(tuple);
   31755             : }
   31756             : static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
   31757             :     __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
   31758             :     m->defaults_kwdict = dict;
   31759             :     Py_INCREF(dict);
   31760             : }
   31761             : static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
   31762             :     __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
   31763             :     m->func_annotations = dict;
   31764             :     Py_INCREF(dict);
   31765             : }
   31766             : 
   31767             : /* CythonFunction */
   31768           1 : static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
   31769             :                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
   31770           1 :     PyObject *op = __Pyx_CyFunction_Init(
   31771           1 :         PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
   31772             :         ml, flags, qualname, closure, module, globals, code
   31773             :     );
   31774           1 :     if (likely(op)) {
   31775           1 :         PyObject_GC_Track(op);
   31776             :     }
   31777           1 :     return op;
   31778             : }
   31779             : 
   31780             : /* FusedFunction */
   31781             : static PyObject *
   31782           8 : __pyx_FusedFunction_New(PyMethodDef *ml, int flags,
   31783             :                         PyObject *qualname, PyObject *closure,
   31784             :                         PyObject *module, PyObject *globals,
   31785             :                         PyObject *code)
   31786             : {
   31787           8 :     PyObject *op = __Pyx_CyFunction_Init(
   31788           8 :         PyObject_GC_New(__pyx_CyFunctionObject, __pyx_FusedFunctionType),
   31789             :         ml, flags, qualname, closure, module, globals, code
   31790             :     );
   31791           8 :     if (likely(op)) {
   31792           8 :         __pyx_FusedFunctionObject *fusedfunc = (__pyx_FusedFunctionObject *) op;
   31793           8 :         fusedfunc->__signatures__ = NULL;
   31794           8 :         fusedfunc->self = NULL;
   31795           8 :         PyObject_GC_Track(op);
   31796             :     }
   31797           8 :     return op;
   31798             : }
   31799             : static void
   31800           0 : __pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self)
   31801             : {
   31802           0 :     PyObject_GC_UnTrack(self);
   31803           0 :     Py_CLEAR(self->self);
   31804           0 :     Py_CLEAR(self->__signatures__);
   31805           0 :     __Pyx__CyFunction_dealloc((__pyx_CyFunctionObject *) self);
   31806           0 : }
   31807             : static int
   31808           0 : __pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self,
   31809             :                              visitproc visit,
   31810             :                              void *arg)
   31811             : {
   31812           0 :     Py_VISIT(self->self);
   31813           0 :     Py_VISIT(self->__signatures__);
   31814           0 :     return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg);
   31815             : }
   31816             : static int
   31817           0 : __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self)
   31818             : {
   31819           0 :     Py_CLEAR(self->self);
   31820           0 :     Py_CLEAR(self->__signatures__);
   31821           0 :     return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self);
   31822             : }
   31823             : static PyObject *
   31824           0 : __pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type)
   31825             : {
   31826           0 :     __pyx_FusedFunctionObject *func, *meth;
   31827           0 :     func = (__pyx_FusedFunctionObject *) self;
   31828           0 :     if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) {
   31829           0 :         Py_INCREF(self);
   31830           0 :         return self;
   31831             :     }
   31832           0 :     if (obj == Py_None)
   31833           0 :         obj = NULL;
   31834           0 :     if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD)
   31835           0 :         obj = type;
   31836           0 :     if (obj == NULL) {
   31837           0 :         Py_INCREF(self);
   31838           0 :         return self;
   31839             :     }
   31840           0 :     meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_New(
   31841             :                     ((PyCFunctionObject *) func)->m_ml,
   31842             :                     ((__pyx_CyFunctionObject *) func)->flags,
   31843             :                     ((__pyx_CyFunctionObject *) func)->func_qualname,
   31844             :                     ((__pyx_CyFunctionObject *) func)->func_closure,
   31845             :                     ((PyCFunctionObject *) func)->m_module,
   31846             :                     ((__pyx_CyFunctionObject *) func)->func_globals,
   31847             :                     ((__pyx_CyFunctionObject *) func)->func_code);
   31848           0 :     if (unlikely(!meth))
   31849             :         return NULL;
   31850           0 :     if (func->func.defaults) {
   31851           0 :         PyObject **pydefaults;
   31852           0 :         int i;
   31853           0 :         if (unlikely(!__Pyx_CyFunction_InitDefaults(
   31854             :                 (PyObject*)meth,
   31855             :                 func->func.defaults_size,
   31856             :                 func->func.defaults_pyobjects))) {
   31857           0 :             Py_XDECREF((PyObject*)meth);
   31858           0 :             return NULL;
   31859             :         }
   31860           0 :         memcpy(meth->func.defaults, func->func.defaults, func->func.defaults_size);
   31861           0 :         pydefaults = __Pyx_CyFunction_Defaults(PyObject *, meth);
   31862           0 :         for (i = 0; i < meth->func.defaults_pyobjects; i++)
   31863           0 :             Py_XINCREF(pydefaults[i]);
   31864             :     }
   31865           0 :     __Pyx_CyFunction_SetClassObj(meth, __Pyx_CyFunction_GetClassObj(func));
   31866           0 :     Py_XINCREF(func->__signatures__);
   31867           0 :     meth->__signatures__ = func->__signatures__;
   31868           0 :     Py_XINCREF(func->func.defaults_tuple);
   31869           0 :     meth->func.defaults_tuple = func->func.defaults_tuple;
   31870           0 :     Py_XINCREF(obj);
   31871           0 :     meth->self = obj;
   31872           0 :     return (PyObject *) meth;
   31873             : }
   31874             : static PyObject *
   31875           0 : _obj_to_string(PyObject *obj)
   31876             : {
   31877           0 :     if (PyUnicode_CheckExact(obj))
   31878           0 :         return __Pyx_NewRef(obj);
   31879             : #if PY_MAJOR_VERSION == 2
   31880             :     else if (PyString_Check(obj))
   31881             :         return PyUnicode_FromEncodedObject(obj, NULL, "strict");
   31882             : #endif
   31883           0 :     else if (PyType_Check(obj))
   31884           0 :         return PyObject_GetAttr(obj, __pyx_n_s_name_2);
   31885             :     else
   31886           0 :         return PyObject_Unicode(obj);
   31887             : }
   31888             : static PyObject *
   31889           0 : __pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx)
   31890             : {
   31891           0 :     PyObject *signature = NULL;
   31892           0 :     PyObject *unbound_result_func;
   31893           0 :     PyObject *result_func = NULL;
   31894           0 :     if (unlikely(self->__signatures__ == NULL)) {
   31895           0 :         PyErr_SetString(PyExc_TypeError, "Function is not fused");
   31896           0 :         return NULL;
   31897             :     }
   31898           0 :     if (PyTuple_Check(idx)) {
   31899           0 :         Py_ssize_t n = PyTuple_GET_SIZE(idx);
   31900           0 :         PyObject *list = PyList_New(n);
   31901           0 :         int i;
   31902           0 :         if (unlikely(!list))
   31903             :             return NULL;
   31904           0 :         for (i = 0; i < n; i++) {
   31905           0 :             PyObject *string;
   31906             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   31907           0 :             PyObject *item = PyTuple_GET_ITEM(idx, i);
   31908             : #else
   31909             :             PyObject *item = PySequence_ITEM(idx, i);  if (unlikely(!item)) goto __pyx_err;
   31910             : #endif
   31911           0 :             string = _obj_to_string(item);
   31912             : #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
   31913             :             Py_DECREF(item);
   31914             : #endif
   31915           0 :             if (unlikely(!string)) goto __pyx_err;
   31916           0 :             PyList_SET_ITEM(list, i, string);
   31917             :         }
   31918           0 :         signature = PyUnicode_Join(__pyx_kp_u__12, list);
   31919           0 : __pyx_err:;
   31920           0 :         Py_DECREF(list);
   31921             :     } else {
   31922           0 :         signature = _obj_to_string(idx);
   31923             :     }
   31924           0 :     if (unlikely(!signature))
   31925             :         return NULL;
   31926           0 :     unbound_result_func = PyObject_GetItem(self->__signatures__, signature);
   31927           0 :     if (likely(unbound_result_func)) {
   31928           0 :         if (self->self) {
   31929           0 :             __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func;
   31930           0 :             __Pyx_CyFunction_SetClassObj(unbound, __Pyx_CyFunction_GetClassObj(self));
   31931           0 :             result_func = __pyx_FusedFunction_descr_get(unbound_result_func,
   31932             :                                                         self->self, self->self);
   31933             :         } else {
   31934           0 :             result_func = unbound_result_func;
   31935           0 :             Py_INCREF(result_func);
   31936             :         }
   31937             :     }
   31938           0 :     Py_DECREF(signature);
   31939           0 :     Py_XDECREF(unbound_result_func);
   31940           0 :     return result_func;
   31941             : }
   31942             : static PyObject *
   31943           0 : __pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw)
   31944             : {
   31945           0 :      __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
   31946           0 :     int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD &&
   31947           0 :                               !((__pyx_FusedFunctionObject *) func)->__signatures__);
   31948           0 :     if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !static_specialized) {
   31949           0 :         return __Pyx_CyFunction_CallAsMethod(func, args, kw);
   31950             :     } else {
   31951           0 :         return __Pyx_CyFunction_Call(func, args, kw);
   31952             :     }
   31953             : }
   31954             : static PyObject *
   31955           0 : __pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw)
   31956             : {
   31957           0 :     __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func;
   31958           0 :     Py_ssize_t argc = PyTuple_GET_SIZE(args);
   31959           0 :     PyObject *new_args = NULL;
   31960           0 :     __pyx_FusedFunctionObject *new_func = NULL;
   31961           0 :     PyObject *result = NULL;
   31962           0 :     int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD;
   31963           0 :     if (binding_func->self) {
   31964           0 :         PyObject *self;
   31965           0 :         Py_ssize_t i;
   31966           0 :         new_args = PyTuple_New(argc + 1);
   31967           0 :         if (unlikely(!new_args))
   31968             :             return NULL;
   31969           0 :         self = binding_func->self;
   31970           0 :         Py_INCREF(self);
   31971           0 :         PyTuple_SET_ITEM(new_args, 0, self);
   31972           0 :         self = NULL;
   31973           0 :         for (i = 0; i < argc; i++) {
   31974             : #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
   31975           0 :             PyObject *item = PyTuple_GET_ITEM(args, i);
   31976           0 :             Py_INCREF(item);
   31977             : #else
   31978             :             PyObject *item = PySequence_ITEM(args, i);  if (unlikely(!item)) goto bad;
   31979             : #endif
   31980           0 :             PyTuple_SET_ITEM(new_args, i + 1, item);
   31981             :         }
   31982             :         args = new_args;
   31983             :     }
   31984           0 :     if (binding_func->__signatures__) {
   31985           0 :         PyObject *tup;
   31986           0 :         if (is_staticmethod && binding_func->func.flags & __Pyx_CYFUNCTION_CCLASS) {
   31987           0 :             tup = PyTuple_Pack(3, args,
   31988             :                                kw == NULL ? Py_None : kw,
   31989             :                                binding_func->func.defaults_tuple);
   31990           0 :             if (unlikely(!tup)) goto bad;
   31991           0 :             new_func = (__pyx_FusedFunctionObject *) __Pyx_CyFunction_CallMethod(
   31992             :                 func, binding_func->__signatures__, tup, NULL);
   31993             :         } else {
   31994           0 :             tup = PyTuple_Pack(4, binding_func->__signatures__, args,
   31995             :                                kw == NULL ? Py_None : kw,
   31996             :                                binding_func->func.defaults_tuple);
   31997           0 :             if (unlikely(!tup)) goto bad;
   31998           0 :             new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL);
   31999             :         }
   32000           0 :         Py_DECREF(tup);
   32001           0 :         if (unlikely(!new_func))
   32002           0 :             goto bad;
   32003           0 :         __Pyx_CyFunction_SetClassObj(new_func, __Pyx_CyFunction_GetClassObj(binding_func));
   32004           0 :         func = (PyObject *) new_func;
   32005             :     }
   32006           0 :     result = __pyx_FusedFunction_callfunction(func, args, kw);
   32007           0 : bad:
   32008           0 :     Py_XDECREF(new_args);
   32009           0 :     Py_XDECREF((PyObject *) new_func);
   32010           0 :     return result;
   32011             : }
   32012             : static PyMemberDef __pyx_FusedFunction_members[] = {
   32013             :     {(char *) "__signatures__",
   32014             :      T_OBJECT,
   32015             :      offsetof(__pyx_FusedFunctionObject, __signatures__),
   32016             :      READONLY,
   32017             :      0},
   32018             :     {(char *) "__self__", T_OBJECT_EX, offsetof(__pyx_FusedFunctionObject, self), READONLY, 0},
   32019             :     {0, 0, 0, 0, 0},
   32020             : };
   32021             : static PyGetSetDef __pyx_FusedFunction_getsets[] = {
   32022             :     {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
   32023             :     {0, 0, 0, 0, 0}
   32024             : };
   32025             : #if CYTHON_USE_TYPE_SPECS
   32026             : static PyType_Slot __pyx_FusedFunctionType_slots[] = {
   32027             :     {Py_tp_dealloc, (void *)__pyx_FusedFunction_dealloc},
   32028             :     {Py_tp_call, (void *)__pyx_FusedFunction_call},
   32029             :     {Py_tp_traverse, (void *)__pyx_FusedFunction_traverse},
   32030             :     {Py_tp_clear, (void *)__pyx_FusedFunction_clear},
   32031             :     {Py_tp_members, (void *)__pyx_FusedFunction_members},
   32032             :     {Py_tp_getset, (void *)__pyx_FusedFunction_getsets},
   32033             :     {Py_tp_descr_get, (void *)__pyx_FusedFunction_descr_get},
   32034             :     {Py_mp_subscript, (void *)__pyx_FusedFunction_getitem},
   32035             :     {0, 0},
   32036             : };
   32037             : static PyType_Spec __pyx_FusedFunctionType_spec = {
   32038             :     __PYX_TYPE_MODULE_PREFIX "fused_cython_function",
   32039             :     sizeof(__pyx_FusedFunctionObject),
   32040             :     0,
   32041             :     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
   32042             :     __pyx_FusedFunctionType_slots
   32043             : };
   32044             : #else
   32045             : static PyMappingMethods __pyx_FusedFunction_mapping_methods = {
   32046             :     0,
   32047             :     (binaryfunc) __pyx_FusedFunction_getitem,
   32048             :     0,
   32049             : };
   32050             : static PyTypeObject __pyx_FusedFunctionType_type = {
   32051             :     PyVarObject_HEAD_INIT(0, 0)
   32052             :     __PYX_TYPE_MODULE_PREFIX "fused_cython_function",
   32053             :     sizeof(__pyx_FusedFunctionObject),
   32054             :     0,
   32055             :     (destructor) __pyx_FusedFunction_dealloc,
   32056             :     0,
   32057             :     0,
   32058             :     0,
   32059             : #if PY_MAJOR_VERSION < 3
   32060             :     0,
   32061             : #else
   32062             :     0,
   32063             : #endif
   32064             :     0,
   32065             :     0,
   32066             :     0,
   32067             :     &__pyx_FusedFunction_mapping_methods,
   32068             :     0,
   32069             :     (ternaryfunc) __pyx_FusedFunction_call,
   32070             :     0,
   32071             :     0,
   32072             :     0,
   32073             :     0,
   32074             :     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
   32075             :     0,
   32076             :     (traverseproc) __pyx_FusedFunction_traverse,
   32077             :     (inquiry) __pyx_FusedFunction_clear,
   32078             :     0,
   32079             :     0,
   32080             :     0,
   32081             :     0,
   32082             :     0,
   32083             :     __pyx_FusedFunction_members,
   32084             :     __pyx_FusedFunction_getsets,
   32085             :     &__pyx_CyFunctionType_type,
   32086             :     0,
   32087             :     __pyx_FusedFunction_descr_get,
   32088             :     0,
   32089             :     0,
   32090             :     0,
   32091             :     0,
   32092             :     0,
   32093             :     0,
   32094             :     0,
   32095             :     0,
   32096             :     0,
   32097             :     0,
   32098             :     0,
   32099             :     0,
   32100             :     0,
   32101             :     0,
   32102             : #if PY_VERSION_HEX >= 0x030400a1
   32103             :     0,
   32104             : #endif
   32105             : #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
   32106             :     0,
   32107             : #endif
   32108             : #if __PYX_NEED_TP_PRINT_SLOT
   32109             :     0,
   32110             : #endif
   32111             : #if PY_VERSION_HEX >= 0x030C0000
   32112             :     0,
   32113             : #endif
   32114             : #if PY_VERSION_HEX >= 0x030d00A4
   32115             :     0,
   32116             : #endif
   32117             : #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
   32118             :     0,
   32119             : #endif
   32120             : };
   32121             : #endif
   32122           1 : static int __pyx_FusedFunction_init(PyObject *module) {
   32123             : #if CYTHON_USE_TYPE_SPECS
   32124             :     PyObject *bases = PyTuple_Pack(1, __pyx_CyFunctionType);
   32125             :     if (unlikely(!bases)) {
   32126             :         return -1;
   32127             :     }
   32128             :     __pyx_FusedFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_FusedFunctionType_spec, bases);
   32129             :     Py_DECREF(bases);
   32130             : #else
   32131           1 :     CYTHON_UNUSED_VAR(module);
   32132           1 :     __pyx_FusedFunctionType_type.tp_base = __pyx_CyFunctionType;
   32133           1 :     __pyx_FusedFunctionType = __Pyx_FetchCommonType(&__pyx_FusedFunctionType_type);
   32134             : #endif
   32135           1 :     if (unlikely(__pyx_FusedFunctionType == NULL)) {
   32136           0 :         return -1;
   32137             :     }
   32138             :     return 0;
   32139             : }
   32140             : 
   32141             : /* CLineInTraceback */
   32142             : #ifndef CYTHON_CLINE_IN_TRACEBACK
   32143           0 : static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
   32144           0 :     PyObject *use_cline;
   32145           0 :     PyObject *ptype, *pvalue, *ptraceback;
   32146             : #if CYTHON_COMPILING_IN_CPYTHON
   32147           0 :     PyObject **cython_runtime_dict;
   32148             : #endif
   32149           0 :     CYTHON_MAYBE_UNUSED_VAR(tstate);
   32150           0 :     if (unlikely(!__pyx_cython_runtime)) {
   32151             :         return c_line;
   32152             :     }
   32153           0 :     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
   32154             : #if CYTHON_COMPILING_IN_CPYTHON
   32155           0 :     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
   32156           0 :     if (likely(cython_runtime_dict)) {
   32157           0 :         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
   32158             :             use_cline, *cython_runtime_dict,
   32159             :             __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
   32160             :     } else
   32161             : #endif
   32162             :     {
   32163           0 :       PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
   32164           0 :       if (use_cline_obj) {
   32165           0 :         use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
   32166           0 :         Py_DECREF(use_cline_obj);
   32167             :       } else {
   32168           0 :         PyErr_Clear();
   32169           0 :         use_cline = NULL;
   32170             :       }
   32171             :     }
   32172           0 :     if (!use_cline) {
   32173           0 :         c_line = 0;
   32174           0 :         (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
   32175             :     }
   32176           0 :     else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
   32177             :         c_line = 0;
   32178             :     }
   32179           0 :     __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
   32180           0 :     return c_line;
   32181             : }
   32182             : #endif
   32183             : 
   32184             : /* CodeObjectCache */
   32185             : #if !CYTHON_COMPILING_IN_LIMITED_API
   32186           0 : static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
   32187           0 :     int start = 0, mid = 0, end = count - 1;
   32188           0 :     if (end >= 0 && code_line > entries[end].code_line) {
   32189             :         return count;
   32190             :     }
   32191           0 :     while (start < end) {
   32192           0 :         mid = start + (end - start) / 2;
   32193           0 :         if (code_line < entries[mid].code_line) {
   32194             :             end = mid;
   32195           0 :         } else if (code_line > entries[mid].code_line) {
   32196           0 :              start = mid + 1;
   32197             :         } else {
   32198           0 :             return mid;
   32199             :         }
   32200             :     }
   32201           0 :     if (code_line <= entries[mid].code_line) {
   32202             :         return mid;
   32203             :     } else {
   32204           0 :         return mid + 1;
   32205             :     }
   32206             : }
   32207           0 : static PyCodeObject *__pyx_find_code_object(int code_line) {
   32208           0 :     PyCodeObject* code_object;
   32209           0 :     int pos;
   32210           0 :     if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
   32211             :         return NULL;
   32212             :     }
   32213           0 :     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
   32214           0 :     if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
   32215             :         return NULL;
   32216             :     }
   32217           0 :     code_object = __pyx_code_cache.entries[pos].code_object;
   32218           0 :     Py_INCREF(code_object);
   32219             :     return code_object;
   32220             : }
   32221           0 : static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
   32222           0 :     int pos, i;
   32223           0 :     __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
   32224           0 :     if (unlikely(!code_line)) {
   32225             :         return;
   32226             :     }
   32227           0 :     if (unlikely(!entries)) {
   32228           0 :         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
   32229           0 :         if (likely(entries)) {
   32230           0 :             __pyx_code_cache.entries = entries;
   32231           0 :             __pyx_code_cache.max_count = 64;
   32232           0 :             __pyx_code_cache.count = 1;
   32233           0 :             entries[0].code_line = code_line;
   32234           0 :             entries[0].code_object = code_object;
   32235           0 :             Py_INCREF(code_object);
   32236             :         }
   32237           0 :         return;
   32238             :     }
   32239           0 :     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
   32240           0 :     if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
   32241           0 :         PyCodeObject* tmp = entries[pos].code_object;
   32242           0 :         entries[pos].code_object = code_object;
   32243           0 :         Py_DECREF(tmp);
   32244           0 :         return;
   32245             :     }
   32246           0 :     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
   32247           0 :         int new_max = __pyx_code_cache.max_count + 64;
   32248           0 :         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
   32249           0 :             __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
   32250           0 :         if (unlikely(!entries)) {
   32251             :             return;
   32252             :         }
   32253           0 :         __pyx_code_cache.entries = entries;
   32254           0 :         __pyx_code_cache.max_count = new_max;
   32255             :     }
   32256           0 :     for (i=__pyx_code_cache.count; i>pos; i--) {
   32257           0 :         entries[i] = entries[i-1];
   32258             :     }
   32259           0 :     entries[pos].code_line = code_line;
   32260           0 :     entries[pos].code_object = code_object;
   32261           0 :     __pyx_code_cache.count++;
   32262           0 :     Py_INCREF(code_object);
   32263             : }
   32264             : #endif
   32265             : 
   32266             : /* AddTraceback */
   32267             : #include "compile.h"
   32268             : #include "frameobject.h"
   32269             : #include "traceback.h"
   32270             : #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
   32271             :   #ifndef Py_BUILD_CORE
   32272             :     #define Py_BUILD_CORE 1
   32273             :   #endif
   32274             :   #include "internal/pycore_frame.h"
   32275             : #endif
   32276             : #if CYTHON_COMPILING_IN_LIMITED_API
   32277             : static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
   32278             :                                                        PyObject *firstlineno, PyObject *name) {
   32279             :     PyObject *replace = NULL;
   32280             :     if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
   32281             :     if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
   32282             :     replace = PyObject_GetAttrString(code, "replace");
   32283             :     if (likely(replace)) {
   32284             :         PyObject *result;
   32285             :         result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
   32286             :         Py_DECREF(replace);
   32287             :         return result;
   32288             :     }
   32289             :     PyErr_Clear();
   32290             :     #if __PYX_LIMITED_VERSION_HEX < 0x030780000
   32291             :     {
   32292             :         PyObject *compiled = NULL, *result = NULL;
   32293             :         if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
   32294             :         if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
   32295             :         compiled = Py_CompileString(
   32296             :             "out = type(code)(\n"
   32297             :             "  code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
   32298             :             "  code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
   32299             :             "  code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
   32300             :             "  code.co_lnotab)\n", "<dummy>", Py_file_input);
   32301             :         if (!compiled) return NULL;
   32302             :         result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
   32303             :         Py_DECREF(compiled);
   32304             :         if (!result) PyErr_Print();
   32305             :         Py_DECREF(result);
   32306             :         result = PyDict_GetItemString(scratch_dict, "out");
   32307             :         if (result) Py_INCREF(result);
   32308             :         return result;
   32309             :     }
   32310             :     #else
   32311             :     return NULL;
   32312             :     #endif
   32313             : }
   32314             : static void __Pyx_AddTraceback(const char *funcname, int c_line,
   32315             :                                int py_line, const char *filename) {
   32316             :     PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
   32317             :     PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
   32318             :     PyObject *exc_type, *exc_value, *exc_traceback;
   32319             :     int success = 0;
   32320             :     if (c_line) {
   32321             :         (void) __pyx_cfilenm;
   32322             :         (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
   32323             :     }
   32324             :     PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
   32325             :     code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
   32326             :     if (unlikely(!code_object)) goto bad;
   32327             :     py_py_line = PyLong_FromLong(py_line);
   32328             :     if (unlikely(!py_py_line)) goto bad;
   32329             :     py_funcname = PyUnicode_FromString(funcname);
   32330             :     if (unlikely(!py_funcname)) goto bad;
   32331             :     dict = PyDict_New();
   32332             :     if (unlikely(!dict)) goto bad;
   32333             :     {
   32334             :         PyObject *old_code_object = code_object;
   32335             :         code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
   32336             :         Py_DECREF(old_code_object);
   32337             :     }
   32338             :     if (unlikely(!code_object)) goto bad;
   32339             :     getframe = PySys_GetObject("_getframe");
   32340             :     if (unlikely(!getframe)) goto bad;
   32341             :     if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
   32342             :     frame = PyEval_EvalCode(code_object, dict, dict);
   32343             :     if (unlikely(!frame) || frame == Py_None) goto bad;
   32344             :     success = 1;
   32345             :   bad:
   32346             :     PyErr_Restore(exc_type, exc_value, exc_traceback);
   32347             :     Py_XDECREF(code_object);
   32348             :     Py_XDECREF(py_py_line);
   32349             :     Py_XDECREF(py_funcname);
   32350             :     Py_XDECREF(dict);
   32351             :     Py_XDECREF(replace);
   32352             :     if (success) {
   32353             :         PyTraceBack_Here(
   32354             :             (struct _frame*)frame);
   32355             :     }
   32356             :     Py_XDECREF(frame);
   32357             : }
   32358             : #else
   32359           0 : static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
   32360             :             const char *funcname, int c_line,
   32361             :             int py_line, const char *filename) {
   32362           0 :     PyCodeObject *py_code = NULL;
   32363           0 :     PyObject *py_funcname = NULL;
   32364             :     #if PY_MAJOR_VERSION < 3
   32365             :     PyObject *py_srcfile = NULL;
   32366             :     py_srcfile = PyString_FromString(filename);
   32367             :     if (!py_srcfile) goto bad;
   32368             :     #endif
   32369           0 :     if (c_line) {
   32370             :         #if PY_MAJOR_VERSION < 3
   32371             :         py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
   32372             :         if (!py_funcname) goto bad;
   32373             :         #else
   32374           0 :         py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
   32375           0 :         if (!py_funcname) goto bad;
   32376           0 :         funcname = PyUnicode_AsUTF8(py_funcname);
   32377           0 :         if (!funcname) goto bad;
   32378             :         #endif
   32379             :     }
   32380             :     else {
   32381             :         #if PY_MAJOR_VERSION < 3
   32382             :         py_funcname = PyString_FromString(funcname);
   32383             :         if (!py_funcname) goto bad;
   32384             :         #endif
   32385           0 :     }
   32386             :     #if PY_MAJOR_VERSION < 3
   32387             :     py_code = __Pyx_PyCode_New(
   32388             :         0,
   32389             :         0,
   32390             :         0,
   32391             :         0,
   32392             :         0,
   32393             :         0,
   32394             :         __pyx_empty_bytes, /*PyObject *code,*/
   32395             :         __pyx_empty_tuple, /*PyObject *consts,*/
   32396             :         __pyx_empty_tuple, /*PyObject *names,*/
   32397             :         __pyx_empty_tuple, /*PyObject *varnames,*/
   32398             :         __pyx_empty_tuple, /*PyObject *freevars,*/
   32399             :         __pyx_empty_tuple, /*PyObject *cellvars,*/
   32400             :         py_srcfile,   /*PyObject *filename,*/
   32401             :         py_funcname,  /*PyObject *name,*/
   32402             :         py_line,
   32403             :         __pyx_empty_bytes  /*PyObject *lnotab*/
   32404             :     );
   32405             :     Py_DECREF(py_srcfile);
   32406             :     #else
   32407           0 :     py_code = PyCode_NewEmpty(filename, funcname, py_line);
   32408             :     #endif
   32409           0 :     Py_XDECREF(py_funcname);
   32410           0 :     return py_code;
   32411           0 : bad:
   32412           0 :     Py_XDECREF(py_funcname);
   32413             :     #if PY_MAJOR_VERSION < 3
   32414             :     Py_XDECREF(py_srcfile);
   32415             :     #endif
   32416           0 :     return NULL;
   32417             : }
   32418           0 : static void __Pyx_AddTraceback(const char *funcname, int c_line,
   32419             :                                int py_line, const char *filename) {
   32420           0 :     PyCodeObject *py_code = 0;
   32421           0 :     PyFrameObject *py_frame = 0;
   32422           0 :     PyThreadState *tstate = __Pyx_PyThreadState_Current;
   32423           0 :     PyObject *ptype, *pvalue, *ptraceback;
   32424           0 :     if (c_line) {
   32425           0 :         c_line = __Pyx_CLineForTraceback(tstate, c_line);
   32426             :     }
   32427           0 :     py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
   32428           0 :     if (!py_code) {
   32429           0 :         __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
   32430           0 :         py_code = __Pyx_CreateCodeObjectForTraceback(
   32431             :             funcname, c_line, py_line, filename);
   32432           0 :         if (!py_code) {
   32433             :             /* If the code object creation fails, then we should clear the
   32434             :                fetched exception references and propagate the new exception */
   32435           0 :             Py_XDECREF(ptype);
   32436           0 :             Py_XDECREF(pvalue);
   32437           0 :             Py_XDECREF(ptraceback);
   32438           0 :             goto bad;
   32439             :         }
   32440           0 :         __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
   32441           0 :         __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
   32442             :     }
   32443           0 :     py_frame = PyFrame_New(
   32444             :         tstate,            /*PyThreadState *tstate,*/
   32445             :         py_code,           /*PyCodeObject *code,*/
   32446           0 :         __pyx_d,    /*PyObject *globals,*/
   32447             :         0                  /*PyObject *locals*/
   32448             :     );
   32449           0 :     if (!py_frame) goto bad;
   32450           0 :     __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
   32451           0 :     PyTraceBack_Here(py_frame);
   32452           0 : bad:
   32453           0 :     Py_XDECREF(py_code);
   32454           0 :     Py_XDECREF(py_frame);
   32455           0 : }
   32456             : #endif
   32457             : 
   32458             : /* Declarations */
   32459             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32460             :   #ifdef __cplusplus
   32461             :     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
   32462             :       return ::std::complex< float >(x, y);
   32463             :     }
   32464             :   #else
   32465             :     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
   32466             :       return x + y*(__pyx_t_float_complex)_Complex_I;
   32467             :     }
   32468             :   #endif
   32469             : #else
   32470             :     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
   32471             :       __pyx_t_float_complex z;
   32472           0 :       z.real = x;
   32473           0 :       z.imag = y;
   32474             :       return z;
   32475             :     }
   32476             : #endif
   32477             : 
   32478             : /* Arithmetic */
   32479             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32480             : #else
   32481             :     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32482             :        return (a.real == b.real) && (a.imag == b.imag);
   32483             :     }
   32484           0 :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32485           0 :         __pyx_t_float_complex z;
   32486           0 :         z.real = a.real + b.real;
   32487           0 :         z.imag = a.imag + b.imag;
   32488           0 :         return z;
   32489             :     }
   32490           0 :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32491           0 :         __pyx_t_float_complex z;
   32492           0 :         z.real = a.real - b.real;
   32493           0 :         z.imag = a.imag - b.imag;
   32494           0 :         return z;
   32495             :     }
   32496           0 :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32497           0 :         __pyx_t_float_complex z;
   32498           0 :         z.real = a.real * b.real - a.imag * b.imag;
   32499           0 :         z.imag = a.real * b.imag + a.imag * b.real;
   32500           0 :         return z;
   32501             :     }
   32502             :     #if 1
   32503             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32504             :         if (b.imag == 0) {
   32505             :             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
   32506             :         } else if (fabsf(b.real) >= fabsf(b.imag)) {
   32507             :             if (b.real == 0 && b.imag == 0) {
   32508             :                 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
   32509             :             } else {
   32510             :                 float r = b.imag / b.real;
   32511             :                 float s = (float)(1.0) / (b.real + b.imag * r);
   32512             :                 return __pyx_t_float_complex_from_parts(
   32513             :                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
   32514             :             }
   32515             :         } else {
   32516             :             float r = b.real / b.imag;
   32517             :             float s = (float)(1.0) / (b.imag + b.real * r);
   32518             :             return __pyx_t_float_complex_from_parts(
   32519             :                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
   32520             :         }
   32521             :     }
   32522             :     #else
   32523             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32524             :         if (b.imag == 0) {
   32525             :             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
   32526             :         } else {
   32527             :             float denom = b.real * b.real + b.imag * b.imag;
   32528             :             return __pyx_t_float_complex_from_parts(
   32529             :                 (a.real * b.real + a.imag * b.imag) / denom,
   32530             :                 (a.imag * b.real - a.real * b.imag) / denom);
   32531             :         }
   32532             :     }
   32533             :     #endif
   32534             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
   32535             :         __pyx_t_float_complex z;
   32536             :         z.real = -a.real;
   32537             :         z.imag = -a.imag;
   32538             :         return z;
   32539             :     }
   32540             :     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
   32541             :        return (a.real == 0) && (a.imag == 0);
   32542             :     }
   32543             :     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
   32544             :         __pyx_t_float_complex z;
   32545             :         z.real =  a.real;
   32546             :         z.imag = -a.imag;
   32547             :         return z;
   32548             :     }
   32549             :     #if 1
   32550             :         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
   32551             :           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
   32552             :             return sqrtf(z.real*z.real + z.imag*z.imag);
   32553             :           #else
   32554             :             return hypotf(z.real, z.imag);
   32555             :           #endif
   32556             :         }
   32557             :         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
   32558             :             __pyx_t_float_complex z;
   32559             :             float r, lnr, theta, z_r, z_theta;
   32560             :             if (b.imag == 0 && b.real == (int)b.real) {
   32561             :                 if (b.real < 0) {
   32562             :                     float denom = a.real * a.real + a.imag * a.imag;
   32563             :                     a.real = a.real / denom;
   32564             :                     a.imag = -a.imag / denom;
   32565             :                     b.real = -b.real;
   32566             :                 }
   32567             :                 switch ((int)b.real) {
   32568             :                     case 0:
   32569             :                         z.real = 1;
   32570             :                         z.imag = 0;
   32571             :                         return z;
   32572             :                     case 1:
   32573             :                         return a;
   32574             :                     case 2:
   32575             :                         return __Pyx_c_prod_float(a, a);
   32576             :                     case 3:
   32577             :                         z = __Pyx_c_prod_float(a, a);
   32578             :                         return __Pyx_c_prod_float(z, a);
   32579             :                     case 4:
   32580             :                         z = __Pyx_c_prod_float(a, a);
   32581             :                         return __Pyx_c_prod_float(z, z);
   32582             :                 }
   32583             :             }
   32584             :             if (a.imag == 0) {
   32585             :                 if (a.real == 0) {
   32586             :                     return a;
   32587             :                 } else if ((b.imag == 0) && (a.real >= 0)) {
   32588             :                     z.real = powf(a.real, b.real);
   32589             :                     z.imag = 0;
   32590             :                     return z;
   32591             :                 } else if (a.real > 0) {
   32592             :                     r = a.real;
   32593             :                     theta = 0;
   32594             :                 } else {
   32595             :                     r = -a.real;
   32596             :                     theta = atan2f(0.0, -1.0);
   32597             :                 }
   32598             :             } else {
   32599             :                 r = __Pyx_c_abs_float(a);
   32600             :                 theta = atan2f(a.imag, a.real);
   32601             :             }
   32602             :             lnr = logf(r);
   32603             :             z_r = expf(lnr * b.real - theta * b.imag);
   32604             :             z_theta = theta * b.real + lnr * b.imag;
   32605             :             z.real = z_r * cosf(z_theta);
   32606             :             z.imag = z_r * sinf(z_theta);
   32607             :             return z;
   32608             :         }
   32609             :     #endif
   32610             : #endif
   32611             : 
   32612             : /* Declarations */
   32613             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32614             :   #ifdef __cplusplus
   32615             :     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
   32616             :       return ::std::complex< double >(x, y);
   32617             :     }
   32618             :   #else
   32619             :     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
   32620             :       return x + y*(__pyx_t_double_complex)_Complex_I;
   32621             :     }
   32622             :   #endif
   32623             : #else
   32624             :     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
   32625             :       __pyx_t_double_complex z;
   32626          28 :       z.real = x;
   32627          28 :       z.imag = y;
   32628             :       return z;
   32629             :     }
   32630             : #endif
   32631             : 
   32632             : /* Arithmetic */
   32633             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32634             : #else
   32635             :     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32636             :        return (a.real == b.real) && (a.imag == b.imag);
   32637             :     }
   32638        2568 :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32639        2568 :         __pyx_t_double_complex z;
   32640        2568 :         z.real = a.real + b.real;
   32641        2568 :         z.imag = a.imag + b.imag;
   32642        2568 :         return z;
   32643             :     }
   32644        2568 :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32645        2568 :         __pyx_t_double_complex z;
   32646        2568 :         z.real = a.real - b.real;
   32647        2568 :         z.imag = a.imag - b.imag;
   32648        2568 :         return z;
   32649             :     }
   32650        3472 :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32651        3472 :         __pyx_t_double_complex z;
   32652        3472 :         z.real = a.real * b.real - a.imag * b.imag;
   32653        3472 :         z.imag = a.real * b.imag + a.imag * b.real;
   32654        3472 :         return z;
   32655             :     }
   32656             :     #if 1
   32657             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32658             :         if (b.imag == 0) {
   32659             :             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
   32660             :         } else if (fabs(b.real) >= fabs(b.imag)) {
   32661             :             if (b.real == 0 && b.imag == 0) {
   32662             :                 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
   32663             :             } else {
   32664             :                 double r = b.imag / b.real;
   32665             :                 double s = (double)(1.0) / (b.real + b.imag * r);
   32666             :                 return __pyx_t_double_complex_from_parts(
   32667             :                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
   32668             :             }
   32669             :         } else {
   32670             :             double r = b.real / b.imag;
   32671             :             double s = (double)(1.0) / (b.imag + b.real * r);
   32672             :             return __pyx_t_double_complex_from_parts(
   32673             :                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
   32674             :         }
   32675             :     }
   32676             :     #else
   32677             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32678             :         if (b.imag == 0) {
   32679             :             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
   32680             :         } else {
   32681             :             double denom = b.real * b.real + b.imag * b.imag;
   32682             :             return __pyx_t_double_complex_from_parts(
   32683             :                 (a.real * b.real + a.imag * b.imag) / denom,
   32684             :                 (a.imag * b.real - a.real * b.imag) / denom);
   32685             :         }
   32686             :     }
   32687             :     #endif
   32688             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
   32689             :         __pyx_t_double_complex z;
   32690             :         z.real = -a.real;
   32691             :         z.imag = -a.imag;
   32692             :         return z;
   32693             :     }
   32694             :     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
   32695             :        return (a.real == 0) && (a.imag == 0);
   32696             :     }
   32697             :     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
   32698             :         __pyx_t_double_complex z;
   32699             :         z.real =  a.real;
   32700             :         z.imag = -a.imag;
   32701             :         return z;
   32702             :     }
   32703             :     #if 1
   32704             :         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
   32705             :           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
   32706             :             return sqrt(z.real*z.real + z.imag*z.imag);
   32707             :           #else
   32708             :             return hypot(z.real, z.imag);
   32709             :           #endif
   32710             :         }
   32711             :         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
   32712             :             __pyx_t_double_complex z;
   32713             :             double r, lnr, theta, z_r, z_theta;
   32714             :             if (b.imag == 0 && b.real == (int)b.real) {
   32715             :                 if (b.real < 0) {
   32716             :                     double denom = a.real * a.real + a.imag * a.imag;
   32717             :                     a.real = a.real / denom;
   32718             :                     a.imag = -a.imag / denom;
   32719             :                     b.real = -b.real;
   32720             :                 }
   32721             :                 switch ((int)b.real) {
   32722             :                     case 0:
   32723             :                         z.real = 1;
   32724             :                         z.imag = 0;
   32725             :                         return z;
   32726             :                     case 1:
   32727             :                         return a;
   32728             :                     case 2:
   32729             :                         return __Pyx_c_prod_double(a, a);
   32730             :                     case 3:
   32731             :                         z = __Pyx_c_prod_double(a, a);
   32732             :                         return __Pyx_c_prod_double(z, a);
   32733             :                     case 4:
   32734             :                         z = __Pyx_c_prod_double(a, a);
   32735             :                         return __Pyx_c_prod_double(z, z);
   32736             :                 }
   32737             :             }
   32738             :             if (a.imag == 0) {
   32739             :                 if (a.real == 0) {
   32740             :                     return a;
   32741             :                 } else if ((b.imag == 0) && (a.real >= 0)) {
   32742             :                     z.real = pow(a.real, b.real);
   32743             :                     z.imag = 0;
   32744             :                     return z;
   32745             :                 } else if (a.real > 0) {
   32746             :                     r = a.real;
   32747             :                     theta = 0;
   32748             :                 } else {
   32749             :                     r = -a.real;
   32750             :                     theta = atan2(0.0, -1.0);
   32751             :                 }
   32752             :             } else {
   32753             :                 r = __Pyx_c_abs_double(a);
   32754             :                 theta = atan2(a.imag, a.real);
   32755             :             }
   32756             :             lnr = log(r);
   32757             :             z_r = exp(lnr * b.real - theta * b.imag);
   32758             :             z_theta = theta * b.real + lnr * b.imag;
   32759             :             z.real = z_r * cos(z_theta);
   32760             :             z.imag = z_r * sin(z_theta);
   32761             :             return z;
   32762             :         }
   32763             :     #endif
   32764             : #endif
   32765             : 
   32766             : /* Declarations */
   32767             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32768             :   #ifdef __cplusplus
   32769             :     static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
   32770             :       return ::std::complex< long double >(x, y);
   32771             :     }
   32772             :   #else
   32773             :     static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
   32774             :       return x + y*(__pyx_t_long_double_complex)_Complex_I;
   32775             :     }
   32776             :   #endif
   32777             : #else
   32778             :     static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
   32779             :       __pyx_t_long_double_complex z;
   32780           0 :       z.real = x;
   32781           0 :       z.imag = y;
   32782           0 :       return z;
   32783             :     }
   32784             : #endif
   32785             : 
   32786             : /* Arithmetic */
   32787             : #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
   32788             : #else
   32789             :     static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32790             :        return (a.real == b.real) && (a.imag == b.imag);
   32791             :     }
   32792           0 :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32793           0 :         __pyx_t_long_double_complex z;
   32794           0 :         z.real = a.real + b.real;
   32795           0 :         z.imag = a.imag + b.imag;
   32796           0 :         return z;
   32797             :     }
   32798           0 :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32799           0 :         __pyx_t_long_double_complex z;
   32800           0 :         z.real = a.real - b.real;
   32801           0 :         z.imag = a.imag - b.imag;
   32802           0 :         return z;
   32803             :     }
   32804           0 :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32805           0 :         __pyx_t_long_double_complex z;
   32806           0 :         z.real = a.real * b.real - a.imag * b.imag;
   32807           0 :         z.imag = a.real * b.imag + a.imag * b.real;
   32808           0 :         return z;
   32809             :     }
   32810             :     #if 1
   32811             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32812             :         if (b.imag == 0) {
   32813             :             return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
   32814             :         } else if (fabsl(b.real) >= fabsl(b.imag)) {
   32815             :             if (b.real == 0 && b.imag == 0) {
   32816             :                 return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
   32817             :             } else {
   32818             :                 long double r = b.imag / b.real;
   32819             :                 long double s = (long double)(1.0) / (b.real + b.imag * r);
   32820             :                 return __pyx_t_long_double_complex_from_parts(
   32821             :                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
   32822             :             }
   32823             :         } else {
   32824             :             long double r = b.real / b.imag;
   32825             :             long double s = (long double)(1.0) / (b.imag + b.real * r);
   32826             :             return __pyx_t_long_double_complex_from_parts(
   32827             :                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
   32828             :         }
   32829             :     }
   32830             :     #else
   32831             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32832             :         if (b.imag == 0) {
   32833             :             return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
   32834             :         } else {
   32835             :             long double denom = b.real * b.real + b.imag * b.imag;
   32836             :             return __pyx_t_long_double_complex_from_parts(
   32837             :                 (a.real * b.real + a.imag * b.imag) / denom,
   32838             :                 (a.imag * b.real - a.real * b.imag) / denom);
   32839             :         }
   32840             :     }
   32841             :     #endif
   32842             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) {
   32843             :         __pyx_t_long_double_complex z;
   32844             :         z.real = -a.real;
   32845             :         z.imag = -a.imag;
   32846             :         return z;
   32847             :     }
   32848             :     static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) {
   32849             :        return (a.real == 0) && (a.imag == 0);
   32850             :     }
   32851             :     static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) {
   32852             :         __pyx_t_long_double_complex z;
   32853             :         z.real =  a.real;
   32854             :         z.imag = -a.imag;
   32855             :         return z;
   32856             :     }
   32857             :     #if 1
   32858             :         static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) {
   32859             :           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
   32860             :             return sqrtl(z.real*z.real + z.imag*z.imag);
   32861             :           #else
   32862             :             return hypotl(z.real, z.imag);
   32863             :           #endif
   32864             :         }
   32865             :         static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
   32866             :             __pyx_t_long_double_complex z;
   32867             :             long double r, lnr, theta, z_r, z_theta;
   32868             :             if (b.imag == 0 && b.real == (int)b.real) {
   32869             :                 if (b.real < 0) {
   32870             :                     long double denom = a.real * a.real + a.imag * a.imag;
   32871             :                     a.real = a.real / denom;
   32872             :                     a.imag = -a.imag / denom;
   32873             :                     b.real = -b.real;
   32874             :                 }
   32875             :                 switch ((int)b.real) {
   32876             :                     case 0:
   32877             :                         z.real = 1;
   32878             :                         z.imag = 0;
   32879             :                         return z;
   32880             :                     case 1:
   32881             :                         return a;
   32882             :                     case 2:
   32883             :                         return __Pyx_c_prod_long__double(a, a);
   32884             :                     case 3:
   32885             :                         z = __Pyx_c_prod_long__double(a, a);
   32886             :                         return __Pyx_c_prod_long__double(z, a);
   32887             :                     case 4:
   32888             :                         z = __Pyx_c_prod_long__double(a, a);
   32889             :                         return __Pyx_c_prod_long__double(z, z);
   32890             :                 }
   32891             :             }
   32892             :             if (a.imag == 0) {
   32893             :                 if (a.real == 0) {
   32894             :                     return a;
   32895             :                 } else if ((b.imag == 0) && (a.real >= 0)) {
   32896             :                     z.real = powl(a.real, b.real);
   32897             :                     z.imag = 0;
   32898             :                     return z;
   32899             :                 } else if (a.real > 0) {
   32900             :                     r = a.real;
   32901             :                     theta = 0;
   32902             :                 } else {
   32903             :                     r = -a.real;
   32904             :                     theta = atan2l(0.0, -1.0);
   32905             :                 }
   32906             :             } else {
   32907             :                 r = __Pyx_c_abs_long__double(a);
   32908             :                 theta = atan2l(a.imag, a.real);
   32909             :             }
   32910             :             lnr = logl(r);
   32911             :             z_r = expl(lnr * b.real - theta * b.imag);
   32912             :             z_theta = theta * b.real + lnr * b.imag;
   32913             :             z.real = z_r * cosl(z_theta);
   32914             :             z.imag = z_r * sinl(z_theta);
   32915             :             return z;
   32916             :         }
   32917             :     #endif
   32918             : #endif
   32919             : 
   32920             : #if PY_MAJOR_VERSION < 3
   32921             : static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
   32922             :     __Pyx_TypeName obj_type_name;
   32923             :     if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags);
   32924             :         if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags);
   32925             :         if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags);
   32926             :     obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
   32927             :     PyErr_Format(PyExc_TypeError,
   32928             :                  "'" __Pyx_FMT_TYPENAME "' does not have the buffer interface",
   32929             :                  obj_type_name);
   32930             :     __Pyx_DECREF_TypeName(obj_type_name);
   32931             :     return -1;
   32932             : }
   32933             : static void __Pyx_ReleaseBuffer(Py_buffer *view) {
   32934             :     PyObject *obj = view->obj;
   32935             :     if (!obj) return;
   32936             :     if (PyObject_CheckBuffer(obj)) {
   32937             :         PyBuffer_Release(view);
   32938             :         return;
   32939             :     }
   32940             :     if ((0)) {}
   32941             :     view->obj = NULL;
   32942             :     Py_DECREF(obj);
   32943             : }
   32944             : #endif
   32945             : 
   32946             : 
   32947             : /* MemviewSliceIsContig */
   32948             : static int
   32949           0 : __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
   32950             : {
   32951           0 :     int i, index, step, start;
   32952           0 :     Py_ssize_t itemsize = mvs.memview->view.itemsize;
   32953           0 :     if (order == 'F') {
   32954             :         step = 1;
   32955             :         start = 0;
   32956             :     } else {
   32957           0 :         step = -1;
   32958           0 :         start = ndim - 1;
   32959             :     }
   32960           0 :     for (i = 0; i < ndim; i++) {
   32961           0 :         index = start + step * i;
   32962           0 :         if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize)
   32963             :             return 0;
   32964           0 :         itemsize *= mvs.shape[index];
   32965             :     }
   32966             :     return 1;
   32967             : }
   32968             : 
   32969             : /* OverlappingSlices */
   32970             : static void
   32971           0 : __pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
   32972             :                                void **out_start, void **out_end,
   32973             :                                int ndim, size_t itemsize)
   32974             : {
   32975           0 :     char *start, *end;
   32976           0 :     int i;
   32977           0 :     start = end = slice->data;
   32978           0 :     for (i = 0; i < ndim; i++) {
   32979           0 :         Py_ssize_t stride = slice->strides[i];
   32980           0 :         Py_ssize_t extent = slice->shape[i];
   32981           0 :         if (extent == 0) {
   32982           0 :             *out_start = *out_end = start;
   32983           0 :             return;
   32984             :         } else {
   32985           0 :             if (stride > 0)
   32986           0 :                 end += stride * (extent - 1);
   32987             :             else
   32988           0 :                 start += stride * (extent - 1);
   32989             :         }
   32990             :     }
   32991           0 :     *out_start = start;
   32992           0 :     *out_end = end + itemsize;
   32993             : }
   32994             : static int
   32995           0 : __pyx_slices_overlap(__Pyx_memviewslice *slice1,
   32996             :                      __Pyx_memviewslice *slice2,
   32997             :                      int ndim, size_t itemsize)
   32998             : {
   32999           0 :     void *start1, *end1, *start2, *end2;
   33000           0 :     __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize);
   33001           0 :     __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize);
   33002           0 :     return (start1 < end2) && (start2 < end1);
   33003             : }
   33004             : 
   33005             : /* IsLittleEndian */
   33006           0 : static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
   33007             : {
   33008           0 :   union {
   33009             :     uint32_t u32;
   33010             :     uint8_t u8[4];
   33011             :   } S;
   33012           0 :   S.u32 = 0x01020304;
   33013           0 :   return S.u8[0] == 4;
   33014             : }
   33015             : 
   33016             : /* BufferFormatCheck */
   33017         405 : static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
   33018             :                               __Pyx_BufFmt_StackElem* stack,
   33019             :                               __Pyx_TypeInfo* type) {
   33020         405 :   stack[0].field = &ctx->root;
   33021         405 :   stack[0].parent_offset = 0;
   33022         405 :   ctx->root.type = type;
   33023         405 :   ctx->root.name = "buffer dtype";
   33024         405 :   ctx->root.offset = 0;
   33025         405 :   ctx->head = stack;
   33026         405 :   ctx->head->field = &ctx->root;
   33027         405 :   ctx->fmt_offset = 0;
   33028         405 :   ctx->head->parent_offset = 0;
   33029         405 :   ctx->new_packmode = '@';
   33030         405 :   ctx->enc_packmode = '@';
   33031         405 :   ctx->new_count = 1;
   33032         405 :   ctx->enc_count = 0;
   33033         405 :   ctx->enc_type = 0;
   33034         405 :   ctx->is_complex = 0;
   33035         405 :   ctx->is_valid_array = 0;
   33036         405 :   ctx->struct_alignment = 0;
   33037         405 :   while (type->typegroup == 'S') {
   33038           0 :     ++ctx->head;
   33039           0 :     ctx->head->field = type->fields;
   33040           0 :     ctx->head->parent_offset = 0;
   33041           0 :     type = type->fields->type;
   33042             :   }
   33043         405 : }
   33044           0 : static int __Pyx_BufFmt_ParseNumber(const char** ts) {
   33045           0 :     int count;
   33046           0 :     const char* t = *ts;
   33047           0 :     if (*t < '0' || *t > '9') {
   33048             :       return -1;
   33049             :     } else {
   33050           0 :         count = *t++ - '0';
   33051           0 :         while (*t >= '0' && *t <= '9') {
   33052           0 :             count *= 10;
   33053           0 :             count += *t++ - '0';
   33054             :         }
   33055             :     }
   33056           0 :     *ts = t;
   33057           0 :     return count;
   33058             : }
   33059           0 : static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
   33060           0 :     int number = __Pyx_BufFmt_ParseNumber(ts);
   33061           0 :     if (number == -1)
   33062           0 :         PyErr_Format(PyExc_ValueError,\
   33063           0 :                      "Does not understand character buffer dtype format string ('%c')", **ts);
   33064           0 :     return number;
   33065             : }
   33066           0 : static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
   33067           0 :   PyErr_Format(PyExc_ValueError,
   33068             :                "Unexpected format string character: '%c'", ch);
   33069             : }
   33070           2 : static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) {
   33071           2 :   switch (ch) {
   33072             :     case '?': return "'bool'";
   33073           0 :     case 'c': return "'char'";
   33074           0 :     case 'b': return "'signed char'";
   33075           0 :     case 'B': return "'unsigned char'";
   33076           0 :     case 'h': return "'short'";
   33077           0 :     case 'H': return "'unsigned short'";
   33078           0 :     case 'i': return "'int'";
   33079           0 :     case 'I': return "'unsigned int'";
   33080           0 :     case 'l': return "'long'";
   33081           0 :     case 'L': return "'unsigned long'";
   33082           0 :     case 'q': return "'long long'";
   33083           0 :     case 'Q': return "'unsigned long long'";
   33084           0 :     case 'f': return (is_complex ? "'complex float'" : "'float'");
   33085           0 :     case 'd': return (is_complex ? "'complex double'" : "'double'");
   33086           0 :     case 'g': return (is_complex ? "'complex long double'" : "'long double'");
   33087           0 :     case 'T': return "a struct";
   33088           2 :     case 'O': return "Python object";
   33089           0 :     case 'P': return "a pointer";
   33090           0 :     case 's': case 'p': return "a string";
   33091           0 :     case 0: return "end";
   33092           0 :     default: return "unparsable format string";
   33093             :   }
   33094             : }
   33095           0 : static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) {
   33096           0 :   switch (ch) {
   33097             :     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
   33098           0 :     case 'h': case 'H': return 2;
   33099             :     case 'i': case 'I': case 'l': case 'L': return 4;
   33100             :     case 'q': case 'Q': return 8;
   33101           0 :     case 'f': return (is_complex ? 8 : 4);
   33102           0 :     case 'd': return (is_complex ? 16 : 8);
   33103           0 :     case 'g': {
   33104           0 :       PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g')..");
   33105           0 :       return 0;
   33106             :     }
   33107             :     case 'O': case 'P': return sizeof(void*);
   33108           0 :     default:
   33109           0 :       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
   33110           0 :       return 0;
   33111             :     }
   33112             : }
   33113         405 : static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
   33114         405 :   switch (ch) {
   33115             :     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
   33116           0 :     case 'h': case 'H': return sizeof(short);
   33117             :     case 'i': case 'I': return sizeof(int);
   33118             :     case 'l': case 'L': return sizeof(long);
   33119             :     #ifdef HAVE_LONG_LONG
   33120             :     case 'q': case 'Q': return sizeof(PY_LONG_LONG);
   33121             :     #endif
   33122          48 :     case 'f': return sizeof(float) * (is_complex ? 2 : 1);
   33123         351 :     case 'd': return sizeof(double) * (is_complex ? 2 : 1);
   33124           0 :     case 'g': return sizeof(long double) * (is_complex ? 2 : 1);
   33125             :     case 'O': case 'P': return sizeof(void*);
   33126           0 :     default: {
   33127           0 :       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
   33128           0 :       return 0;
   33129             :     }
   33130             :   }
   33131             : }
   33132             : typedef struct { char c; short x; } __Pyx_st_short;
   33133             : typedef struct { char c; int x; } __Pyx_st_int;
   33134             : typedef struct { char c; long x; } __Pyx_st_long;
   33135             : typedef struct { char c; float x; } __Pyx_st_float;
   33136             : typedef struct { char c; double x; } __Pyx_st_double;
   33137             : typedef struct { char c; long double x; } __Pyx_st_longdouble;
   33138             : typedef struct { char c; void *x; } __Pyx_st_void_p;
   33139             : #ifdef HAVE_LONG_LONG
   33140             : typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
   33141             : #endif
   33142         405 : static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) {
   33143         405 :   CYTHON_UNUSED_VAR(is_complex);
   33144         405 :   switch (ch) {
   33145             :     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
   33146           0 :     case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short);
   33147             :     case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int);
   33148             :     case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long);
   33149             : #ifdef HAVE_LONG_LONG
   33150             :     case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG);
   33151             : #endif
   33152             :     case 'f': return sizeof(__Pyx_st_float) - sizeof(float);
   33153             :     case 'd': return sizeof(__Pyx_st_double) - sizeof(double);
   33154           0 :     case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double);
   33155             :     case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*);
   33156           0 :     default:
   33157           0 :       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
   33158           0 :       return 0;
   33159             :     }
   33160             : }
   33161             : /* These are for computing the padding at the end of the struct to align
   33162             :    on the first member of the struct. This will probably the same as above,
   33163             :    but we don't have any guarantees.
   33164             :  */
   33165             : typedef struct { short x; char c; } __Pyx_pad_short;
   33166             : typedef struct { int x; char c; } __Pyx_pad_int;
   33167             : typedef struct { long x; char c; } __Pyx_pad_long;
   33168             : typedef struct { float x; char c; } __Pyx_pad_float;
   33169             : typedef struct { double x; char c; } __Pyx_pad_double;
   33170             : typedef struct { long double x; char c; } __Pyx_pad_longdouble;
   33171             : typedef struct { void *x; char c; } __Pyx_pad_void_p;
   33172             : #ifdef HAVE_LONG_LONG
   33173             : typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
   33174             : #endif
   33175         405 : static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) {
   33176         405 :   CYTHON_UNUSED_VAR(is_complex);
   33177         405 :   switch (ch) {
   33178             :     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
   33179           0 :     case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short);
   33180             :     case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int);
   33181             :     case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long);
   33182             : #ifdef HAVE_LONG_LONG
   33183             :     case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG);
   33184             : #endif
   33185             :     case 'f': return sizeof(__Pyx_pad_float) - sizeof(float);
   33186             :     case 'd': return sizeof(__Pyx_pad_double) - sizeof(double);
   33187           0 :     case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double);
   33188             :     case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*);
   33189           0 :     default:
   33190           0 :       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
   33191           0 :       return 0;
   33192             :     }
   33193             : }
   33194         405 : static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
   33195         405 :   switch (ch) {
   33196             :     case 'c':
   33197             :         return 'H';
   33198           0 :     case 'b': case 'h': case 'i':
   33199             :     case 'l': case 'q': case 's': case 'p':
   33200           0 :         return 'I';
   33201           0 :     case '?': case 'B': case 'H': case 'I': case 'L': case 'Q':
   33202           0 :         return 'U';
   33203         399 :     case 'f': case 'd': case 'g':
   33204         399 :         return (is_complex ? 'C' : 'R');
   33205           6 :     case 'O':
   33206           6 :         return 'O';
   33207           0 :     case 'P':
   33208           0 :         return 'P';
   33209           0 :     default: {
   33210           0 :       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
   33211           0 :       return 0;
   33212             :     }
   33213             :   }
   33214             : }
   33215           2 : static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
   33216           4 :   if (ctx->head == NULL || ctx->head->field == &ctx->root) {
   33217           2 :     const char* expected;
   33218           2 :     const char* quote;
   33219           2 :     if (ctx->head == NULL) {
   33220             :       expected = "end";
   33221             :       quote = "";
   33222             :     } else {
   33223           2 :       expected = ctx->head->field->type->name;
   33224           2 :       quote = "'";
   33225             :     }
   33226           2 :     PyErr_Format(PyExc_ValueError,
   33227             :                  "Buffer dtype mismatch, expected %s%s%s but got %s",
   33228             :                  quote, expected, quote,
   33229           2 :                  __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex));
   33230             :   } else {
   33231           0 :     __Pyx_StructField* field = ctx->head->field;
   33232           0 :     __Pyx_StructField* parent = (ctx->head - 1)->field;
   33233           0 :     PyErr_Format(PyExc_ValueError,
   33234             :                  "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'",
   33235           0 :                  field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex),
   33236           0 :                  parent->type->name, field->name);
   33237             :   }
   33238           2 : }
   33239         810 : static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
   33240         810 :   char group;
   33241         810 :   size_t size, offset, arraysize = 1;
   33242         810 :   if (ctx->enc_type == 0) return 0;
   33243         405 :   if (ctx->head->field->type->arraysize[0]) {
   33244           0 :     int i, ndim = 0;
   33245           0 :     if (ctx->enc_type == 's' || ctx->enc_type == 'p') {
   33246           0 :         ctx->is_valid_array = ctx->head->field->type->ndim == 1;
   33247           0 :         ndim = 1;
   33248           0 :         if (ctx->enc_count != ctx->head->field->type->arraysize[0]) {
   33249           0 :             PyErr_Format(PyExc_ValueError,
   33250             :                          "Expected a dimension of size %zu, got %zu",
   33251             :                          ctx->head->field->type->arraysize[0], ctx->enc_count);
   33252           0 :             return -1;
   33253             :         }
   33254             :     }
   33255           0 :     if (!ctx->is_valid_array) {
   33256           0 :       PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d",
   33257             :                    ctx->head->field->type->ndim, ndim);
   33258           0 :       return -1;
   33259             :     }
   33260           0 :     for (i = 0; i < ctx->head->field->type->ndim; i++) {
   33261           0 :       arraysize *= ctx->head->field->type->arraysize[i];
   33262             :     }
   33263           0 :     ctx->is_valid_array = 0;
   33264           0 :     ctx->enc_count = 1;
   33265             :   }
   33266         405 :   group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex);
   33267         405 :   do {
   33268         405 :     __Pyx_StructField* field = ctx->head->field;
   33269         405 :     __Pyx_TypeInfo* type = field->type;
   33270         405 :     if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') {
   33271         405 :       size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex);
   33272             :     } else {
   33273           0 :       size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex);
   33274             :     }
   33275         405 :     if (ctx->enc_packmode == '@') {
   33276         405 :       size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex);
   33277         405 :       size_t align_mod_offset;
   33278         405 :       if (align_at == 0) return -1;
   33279         405 :       align_mod_offset = ctx->fmt_offset % align_at;
   33280         405 :       if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset;
   33281         405 :       if (ctx->struct_alignment == 0)
   33282         405 :           ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type,
   33283             :                                                                  ctx->is_complex);
   33284             :     }
   33285         405 :     if (type->size != size || type->typegroup != group) {
   33286           2 :       if (type->typegroup == 'C' && type->fields != NULL) {
   33287           0 :         size_t parent_offset = ctx->head->parent_offset + field->offset;
   33288           0 :         ++ctx->head;
   33289           0 :         ctx->head->field = type->fields;
   33290           0 :         ctx->head->parent_offset = parent_offset;
   33291           0 :         continue;
   33292             :       }
   33293           2 :       if ((type->typegroup == 'H' || group == 'H') && type->size == size) {
   33294             :       } else {
   33295           2 :           __Pyx_BufFmt_RaiseExpected(ctx);
   33296           2 :           return -1;
   33297             :       }
   33298             :     }
   33299         403 :     offset = ctx->head->parent_offset + field->offset;
   33300         403 :     if (ctx->fmt_offset != offset) {
   33301           0 :       PyErr_Format(PyExc_ValueError,
   33302             :                    "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected",
   33303             :                    (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset);
   33304           0 :       return -1;
   33305             :     }
   33306         403 :     ctx->fmt_offset += size;
   33307         403 :     if (arraysize)
   33308         403 :       ctx->fmt_offset += (arraysize - 1) * size;
   33309         403 :     --ctx->enc_count;
   33310         403 :     while (1) {
   33311         403 :       if (field == &ctx->root) {
   33312         403 :         ctx->head = NULL;
   33313         403 :         if (ctx->enc_count != 0) {
   33314           0 :           __Pyx_BufFmt_RaiseExpected(ctx);
   33315           0 :           return -1;
   33316             :         }
   33317             :         break;
   33318             :       }
   33319           0 :       ctx->head->field = ++field;
   33320           0 :       if (field->type == NULL) {
   33321           0 :         --ctx->head;
   33322           0 :         field = ctx->head->field;
   33323           0 :         continue;
   33324           0 :       } else if (field->type->typegroup == 'S') {
   33325           0 :         size_t parent_offset = ctx->head->parent_offset + field->offset;
   33326           0 :         if (field->type->fields->type == NULL) continue;
   33327           0 :         field = field->type->fields;
   33328           0 :         ++ctx->head;
   33329           0 :         ctx->head->field = field;
   33330           0 :         ctx->head->parent_offset = parent_offset;
   33331           0 :         break;
   33332             :       } else {
   33333             :         break;
   33334             :       }
   33335             :     }
   33336         403 :   } while (ctx->enc_count);
   33337         403 :   ctx->enc_type = 0;
   33338         403 :   ctx->is_complex = 0;
   33339         403 :   return 0;
   33340             : }
   33341             : static int
   33342           0 : __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp)
   33343             : {
   33344           0 :     const char *ts = *tsp;
   33345           0 :     int i = 0, number, ndim;
   33346           0 :     ++ts;
   33347           0 :     if (ctx->new_count != 1) {
   33348           0 :         PyErr_SetString(PyExc_ValueError,
   33349             :                         "Cannot handle repeated arrays in format string");
   33350           0 :         return -1;
   33351             :     }
   33352           0 :     if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return -1;
   33353           0 :     ndim = ctx->head->field->type->ndim;
   33354           0 :     while (*ts && *ts != ')') {
   33355           0 :         switch (*ts) {
   33356           0 :             case ' ': case '\f': case '\r': case '\n': case '\t': case '\v':  continue;
   33357           0 :             default:  break;
   33358             :         }
   33359           0 :         number = __Pyx_BufFmt_ExpectNumber(&ts);
   33360           0 :         if (number == -1) return -1;
   33361           0 :         if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) {
   33362           0 :             PyErr_Format(PyExc_ValueError,
   33363             :                         "Expected a dimension of size %zu, got %d",
   33364             :                         ctx->head->field->type->arraysize[i], number);
   33365           0 :             return -1;
   33366             :         }
   33367           0 :         if (*ts != ',' && *ts != ')') {
   33368           0 :             PyErr_Format(PyExc_ValueError,
   33369             :                                 "Expected a comma in format string, got '%c'", *ts);
   33370           0 :             return -1;
   33371             :         }
   33372           0 :         if (*ts == ',') ts++;
   33373           0 :         i++;
   33374             :     }
   33375           0 :     if (i != ndim) {
   33376           0 :         PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d",
   33377           0 :                             ctx->head->field->type->ndim, i);
   33378           0 :         return -1;
   33379             :     }
   33380           0 :     if (!*ts) {
   33381           0 :         PyErr_SetString(PyExc_ValueError,
   33382             :                         "Unexpected end of format string, expected ')'");
   33383           0 :         return -1;
   33384             :     }
   33385           0 :     ctx->is_valid_array = 1;
   33386           0 :     ctx->new_count = 1;
   33387           0 :     *tsp = ++ts;
   33388           0 :     return 0;
   33389             : }
   33390         405 : static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) {
   33391         405 :   int got_Z = 0;
   33392         810 :   while (1) {
   33393         810 :     switch(*ts) {
   33394         405 :       case 0:
   33395         405 :         if (ctx->enc_type != 0 && ctx->head == NULL) {
   33396           0 :           __Pyx_BufFmt_RaiseExpected(ctx);
   33397           0 :           return NULL;
   33398             :         }
   33399         405 :         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
   33400         403 :         if (ctx->head != NULL) {
   33401           0 :           __Pyx_BufFmt_RaiseExpected(ctx);
   33402           0 :           return NULL;
   33403             :         }
   33404             :         return ts;
   33405           0 :       case ' ':
   33406             :       case '\r':
   33407             :       case '\n':
   33408           0 :         ++ts;
   33409           0 :         break;
   33410             :       case '<':
   33411           0 :         if (!__Pyx_Is_Little_Endian()) {
   33412             :           PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler");
   33413             :           return NULL;
   33414             :         }
   33415           0 :         ctx->new_packmode = '=';
   33416           0 :         ++ts;
   33417           0 :         break;
   33418             :       case '>':
   33419             :       case '!':
   33420           0 :         if (__Pyx_Is_Little_Endian()) {
   33421           0 :           PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler");
   33422           0 :           return NULL;
   33423             :         }
   33424             :         ctx->new_packmode = '=';
   33425             :         ++ts;
   33426             :         break;
   33427           0 :       case '=':
   33428             :       case '@':
   33429             :       case '^':
   33430           0 :         ctx->new_packmode = *ts++;
   33431           0 :         break;
   33432           0 :       case 'T':
   33433             :         {
   33434           0 :           const char* ts_after_sub;
   33435           0 :           size_t i, struct_count = ctx->new_count;
   33436           0 :           size_t struct_alignment = ctx->struct_alignment;
   33437           0 :           ctx->new_count = 1;
   33438           0 :           ++ts;
   33439           0 :           if (*ts != '{') {
   33440           0 :             PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'");
   33441           0 :             return NULL;
   33442             :           }
   33443           0 :           if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
   33444           0 :           ctx->enc_type = 0;
   33445           0 :           ctx->enc_count = 0;
   33446           0 :           ctx->struct_alignment = 0;
   33447           0 :           ++ts;
   33448           0 :           ts_after_sub = ts;
   33449           0 :           for (i = 0; i != struct_count; ++i) {
   33450           0 :             ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts);
   33451           0 :             if (!ts_after_sub) return NULL;
   33452             :           }
   33453           0 :           ts = ts_after_sub;
   33454           0 :           if (struct_alignment) ctx->struct_alignment = struct_alignment;
   33455             :         }
   33456             :         break;
   33457           0 :       case '}':
   33458             :         {
   33459           0 :           size_t alignment = ctx->struct_alignment;
   33460           0 :           ++ts;
   33461           0 :           if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
   33462           0 :           ctx->enc_type = 0;
   33463           0 :           if (alignment && ctx->fmt_offset % alignment) {
   33464           0 :             ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment);
   33465             :           }
   33466             :         }
   33467             :         return ts;
   33468           0 :       case 'x':
   33469           0 :         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
   33470           0 :         ctx->fmt_offset += ctx->new_count;
   33471           0 :         ctx->new_count = 1;
   33472           0 :         ctx->enc_count = 0;
   33473           0 :         ctx->enc_type = 0;
   33474           0 :         ctx->enc_packmode = ctx->new_packmode;
   33475           0 :         ++ts;
   33476           0 :         break;
   33477          84 :       case 'Z':
   33478          84 :         got_Z = 1;
   33479          84 :         ++ts;
   33480          84 :         if (*ts != 'f' && *ts != 'd' && *ts != 'g') {
   33481           0 :           __Pyx_BufFmt_RaiseUnexpectedChar('Z');
   33482           0 :           return NULL;
   33483             :         }
   33484         405 :         CYTHON_FALLTHROUGH;
   33485             :       case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I':
   33486             :       case 'l': case 'L': case 'q': case 'Q':
   33487             :       case 'f': case 'd': case 'g':
   33488             :       case 'O': case 'p':
   33489         405 :         if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) &&
   33490           0 :             (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) {
   33491           0 :           ctx->enc_count += ctx->new_count;
   33492           0 :           ctx->new_count = 1;
   33493           0 :           got_Z = 0;
   33494           0 :           ++ts;
   33495           0 :           break;
   33496             :         }
   33497         405 :         CYTHON_FALLTHROUGH;
   33498             :       case 's':
   33499         405 :         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
   33500         405 :         ctx->enc_count = ctx->new_count;
   33501         405 :         ctx->enc_packmode = ctx->new_packmode;
   33502         405 :         ctx->enc_type = *ts;
   33503         405 :         ctx->is_complex = got_Z;
   33504         405 :         ++ts;
   33505         405 :         ctx->new_count = 1;
   33506         405 :         got_Z = 0;
   33507         405 :         break;
   33508           0 :       case ':':
   33509           0 :         ++ts;
   33510           0 :         while(*ts != ':') ++ts;
   33511           0 :         ++ts;
   33512           0 :         break;
   33513           0 :       case '(':
   33514           0 :         if (__pyx_buffmt_parse_array(ctx, &ts) < 0) return NULL;
   33515             :         break;
   33516           0 :       default:
   33517             :         {
   33518           0 :           int number = __Pyx_BufFmt_ExpectNumber(&ts);
   33519           0 :           if (number == -1) return NULL;
   33520           0 :           ctx->new_count = (size_t)number;
   33521             :         }
   33522             :     }
   33523             :   }
   33524             : }
   33525             : 
   33526             : /* TypeInfoCompare */
   33527             :   static int
   33528           3 : __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
   33529             : {
   33530           3 :     int i;
   33531           3 :     if (!a || !b)
   33532             :         return 0;
   33533           3 :     if (a == b)
   33534             :         return 1;
   33535           0 :     if (a->size != b->size || a->typegroup != b->typegroup ||
   33536           0 :             a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) {
   33537           0 :         if (a->typegroup == 'H' || b->typegroup == 'H') {
   33538           0 :             return a->size == b->size;
   33539             :         } else {
   33540             :             return 0;
   33541             :         }
   33542             :     }
   33543           0 :     if (a->ndim) {
   33544           0 :         for (i = 0; i < a->ndim; i++)
   33545           0 :             if (a->arraysize[i] != b->arraysize[i])
   33546             :                 return 0;
   33547             :     }
   33548           0 :     if (a->typegroup == 'S') {
   33549           0 :         if (a->flags != b->flags)
   33550             :             return 0;
   33551           0 :         if (a->fields || b->fields) {
   33552           0 :             if (!(a->fields && b->fields))
   33553             :                 return 0;
   33554           0 :             for (i = 0; a->fields[i].type && b->fields[i].type; i++) {
   33555           0 :                 __Pyx_StructField *field_a = a->fields + i;
   33556           0 :                 __Pyx_StructField *field_b = b->fields + i;
   33557           0 :                 if (field_a->offset != field_b->offset ||
   33558           0 :                     !__pyx_typeinfo_cmp(field_a->type, field_b->type))
   33559           0 :                     return 0;
   33560             :             }
   33561           0 :             return !a->fields[i].type && !b->fields[i].type;
   33562             :         }
   33563             :     }
   33564             :     return 1;
   33565             : }
   33566             : 
   33567             : /* MemviewSliceValidateAndInit */
   33568             :   static int
   33569         947 : __pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
   33570             : {
   33571         947 :     if (buf->shape[dim] <= 1)
   33572             :         return 1;
   33573         630 :     if (buf->strides) {
   33574         630 :         if (spec & __Pyx_MEMVIEW_CONTIG) {
   33575         406 :             if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) {
   33576           0 :                 if (unlikely(buf->strides[dim] != sizeof(void *))) {
   33577           0 :                     PyErr_Format(PyExc_ValueError,
   33578             :                                  "Buffer is not indirectly contiguous "
   33579             :                                  "in dimension %d.", dim);
   33580           0 :                     goto fail;
   33581             :                 }
   33582         406 :             } else if (unlikely(buf->strides[dim] != buf->itemsize)) {
   33583           0 :                 PyErr_SetString(PyExc_ValueError,
   33584             :                                 "Buffer and memoryview are not contiguous "
   33585             :                                 "in the same dimension.");
   33586           0 :                 goto fail;
   33587             :             }
   33588             :         }
   33589         630 :         if (spec & __Pyx_MEMVIEW_FOLLOW) {
   33590         224 :             Py_ssize_t stride = buf->strides[dim];
   33591         224 :             if (stride < 0)
   33592             :                 stride = -stride;
   33593         224 :             if (unlikely(stride < buf->itemsize)) {
   33594           0 :                 PyErr_SetString(PyExc_ValueError,
   33595             :                                 "Buffer and memoryview are not contiguous "
   33596             :                                 "in the same dimension.");
   33597           0 :                 goto fail;
   33598             :             }
   33599             :         }
   33600             :     } else {
   33601           0 :         if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) {
   33602           0 :             PyErr_Format(PyExc_ValueError,
   33603             :                          "C-contiguous buffer is not contiguous in "
   33604             :                          "dimension %d", dim);
   33605           0 :             goto fail;
   33606           0 :         } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) {
   33607           0 :             PyErr_Format(PyExc_ValueError,
   33608             :                          "C-contiguous buffer is not indirect in "
   33609             :                          "dimension %d", dim);
   33610           0 :             goto fail;
   33611           0 :         } else if (unlikely(buf->suboffsets)) {
   33612           0 :             PyErr_SetString(PyExc_ValueError,
   33613             :                             "Buffer exposes suboffsets but no strides");
   33614           0 :             goto fail;
   33615             :         }
   33616             :     }
   33617             :     return 1;
   33618             : fail:
   33619             :     return 0;
   33620             : }
   33621             : static int
   33622         947 : __pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec)
   33623             : {
   33624         947 :     CYTHON_UNUSED_VAR(ndim);
   33625         947 :     if (spec & __Pyx_MEMVIEW_DIRECT) {
   33626         947 :         if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) {
   33627           0 :             PyErr_Format(PyExc_ValueError,
   33628             :                          "Buffer not compatible with direct access "
   33629             :                          "in dimension %d.", dim);
   33630           0 :             goto fail;
   33631             :         }
   33632             :     }
   33633         947 :     if (spec & __Pyx_MEMVIEW_PTR) {
   33634           0 :         if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) {
   33635           0 :             PyErr_Format(PyExc_ValueError,
   33636             :                          "Buffer is not indirectly accessible "
   33637             :                          "in dimension %d.", dim);
   33638           0 :             goto fail;
   33639             :         }
   33640             :     }
   33641             :     return 1;
   33642             : fail:
   33643             :     return 0;
   33644             : }
   33645             : static int
   33646         406 : __pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag)
   33647             : {
   33648         406 :     int i;
   33649         406 :     if (c_or_f_flag & __Pyx_IS_F_CONTIG) {
   33650             :         Py_ssize_t stride = 1;
   33651           0 :         for (i = 0; i < ndim; i++) {
   33652           0 :             if (unlikely(stride * buf->itemsize != buf->strides[i]  &&  buf->shape[i] > 1)) {
   33653           0 :                 PyErr_SetString(PyExc_ValueError,
   33654             :                     "Buffer not fortran contiguous.");
   33655           0 :                 goto fail;
   33656             :             }
   33657           0 :             stride = stride * buf->shape[i];
   33658             :         }
   33659         406 :     } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) {
   33660         406 :         Py_ssize_t stride = 1;
   33661        1353 :         for (i = ndim - 1; i >- 1; i--) {
   33662         947 :             if (unlikely(stride * buf->itemsize != buf->strides[i]  &&  buf->shape[i] > 1)) {
   33663           0 :                 PyErr_SetString(PyExc_ValueError,
   33664             :                     "Buffer not C contiguous.");
   33665           0 :                 goto fail;
   33666             :             }
   33667         947 :             stride = stride * buf->shape[i];
   33668             :         }
   33669             :     }
   33670             :     return 1;
   33671             : fail:
   33672             :     return 0;
   33673             : }
   33674         408 : static int __Pyx_ValidateAndInit_memviewslice(
   33675             :                 int *axes_specs,
   33676             :                 int c_or_f_flag,
   33677             :                 int buf_flags,
   33678             :                 int ndim,
   33679             :                 __Pyx_TypeInfo *dtype,
   33680             :                 __Pyx_BufFmt_StackElem stack[],
   33681             :                 __Pyx_memviewslice *memviewslice,
   33682             :                 PyObject *original_obj)
   33683             : {
   33684         408 :     struct __pyx_memoryview_obj *memview, *new_memview;
   33685             :     __Pyx_RefNannyDeclarations
   33686         408 :     Py_buffer *buf;
   33687         408 :     int i, spec = 0, retval = -1;
   33688         408 :     __Pyx_BufFmt_Context ctx;
   33689         408 :     int from_memoryview = __pyx_memoryview_check(original_obj);
   33690         408 :     __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0);
   33691         408 :     if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *)
   33692             :                                                             original_obj)->typeinfo)) {
   33693             :         memview = (struct __pyx_memoryview_obj *) original_obj;
   33694             :         new_memview = NULL;
   33695             :     } else {
   33696         405 :         memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
   33697             :                                             original_obj, buf_flags, 0, dtype);
   33698         405 :         new_memview = memview;
   33699         405 :         if (unlikely(!memview))
   33700           0 :             goto fail;
   33701             :     }
   33702         408 :     buf = &memview->view;
   33703         408 :     if (unlikely(buf->ndim != ndim)) {
   33704           0 :         PyErr_Format(PyExc_ValueError,
   33705             :                 "Buffer has wrong number of dimensions (expected %d, got %d)",
   33706             :                 ndim, buf->ndim);
   33707           0 :         goto fail;
   33708             :     }
   33709         408 :     if (new_memview) {
   33710         405 :         __Pyx_BufFmt_Init(&ctx, stack, dtype);
   33711         405 :         if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail;
   33712             :     }
   33713         406 :     if (unlikely((unsigned) buf->itemsize != dtype->size)) {
   33714           0 :         PyErr_Format(PyExc_ValueError,
   33715             :                      "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) "
   33716             :                      "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)",
   33717             :                      buf->itemsize,
   33718             :                      (buf->itemsize > 1) ? "s" : "",
   33719             :                      dtype->name,
   33720             :                      dtype->size,
   33721             :                      (dtype->size > 1) ? "s" : "");
   33722           0 :         goto fail;
   33723             :     }
   33724         406 :     if (buf->len > 0) {
   33725        1353 :         for (i = 0; i < ndim; i++) {
   33726         947 :             spec = axes_specs[i];
   33727         947 :             if (unlikely(!__pyx_check_strides(buf, i, ndim, spec)))
   33728           0 :                 goto fail;
   33729         947 :             if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec)))
   33730           0 :                 goto fail;
   33731             :         }
   33732         406 :         if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag)))
   33733           0 :             goto fail;
   33734             :     }
   33735         406 :     if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice,
   33736             :                                          new_memview != NULL) == -1)) {
   33737           0 :         goto fail;
   33738             :     }
   33739         406 :     retval = 0;
   33740         406 :     goto no_fail;
   33741           2 : fail:
   33742           2 :     Py_XDECREF(new_memview);
   33743           2 :     retval = -1;
   33744         408 : no_fail:
   33745         408 :     __Pyx_RefNannyFinishContext();
   33746         408 :     return retval;
   33747             : }
   33748             : 
   33749             : /* ObjectToMemviewSlice */
   33750          32 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
   33751          32 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33752          32 :     __Pyx_BufFmt_StackElem stack[1];
   33753          32 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33754          32 :     int retcode;
   33755          32 :     if (obj == Py_None) {
   33756           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33757           0 :         return result;
   33758             :     }
   33759          32 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33760             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33761             :                                                  &__Pyx_TypeInfo_float, stack,
   33762             :                                                  &result, obj);
   33763          32 :     if (unlikely(retcode == -1))
   33764           0 :         goto __pyx_fail;
   33765          32 :     return result;
   33766           0 : __pyx_fail:
   33767           0 :     result.memview = NULL;
   33768           0 :     result.data = NULL;
   33769           0 :     return result;
   33770             : }
   33771             : 
   33772             : /* ObjectToMemviewSlice */
   33773           1 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_float_complex(PyObject *obj, int writable_flag) {
   33774           1 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33775           1 :     __Pyx_BufFmt_StackElem stack[1];
   33776           1 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33777           1 :     int retcode;
   33778           1 :     if (obj == Py_None) {
   33779           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33780           0 :         return result;
   33781             :     }
   33782           1 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33783             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33784             :                                                  &__Pyx_TypeInfo___pyx_t_float_complex, stack,
   33785             :                                                  &result, obj);
   33786           1 :     if (unlikely(retcode == -1))
   33787           1 :         goto __pyx_fail;
   33788           0 :     return result;
   33789           1 : __pyx_fail:
   33790           1 :     result.memview = NULL;
   33791           1 :     result.data = NULL;
   33792           1 :     return result;
   33793             : }
   33794             : 
   33795             : /* ObjectToMemviewSlice */
   33796         179 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(PyObject *obj, int writable_flag) {
   33797         179 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33798         179 :     __Pyx_BufFmt_StackElem stack[1];
   33799         179 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33800         179 :     int retcode;
   33801         179 :     if (obj == Py_None) {
   33802           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33803           0 :         return result;
   33804             :     }
   33805         179 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33806             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33807             :                                                  &__Pyx_TypeInfo_double, stack,
   33808             :                                                  &result, obj);
   33809         179 :     if (unlikely(retcode == -1))
   33810           1 :         goto __pyx_fail;
   33811         178 :     return result;
   33812           1 : __pyx_fail:
   33813           1 :     result.memview = NULL;
   33814           1 :     result.data = NULL;
   33815           1 :     return result;
   33816             : }
   33817             : 
   33818             : /* ObjectToMemviewSlice */
   33819          56 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_double_complex(PyObject *obj, int writable_flag) {
   33820          56 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33821          56 :     __Pyx_BufFmt_StackElem stack[1];
   33822          56 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33823          56 :     int retcode;
   33824          56 :     if (obj == Py_None) {
   33825           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33826           0 :         return result;
   33827             :     }
   33828          56 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33829             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33830             :                                                  &__Pyx_TypeInfo___pyx_t_double_complex, stack,
   33831             :                                                  &result, obj);
   33832          56 :     if (unlikely(retcode == -1))
   33833           0 :         goto __pyx_fail;
   33834          56 :     return result;
   33835           0 : __pyx_fail:
   33836           0 :     result.memview = NULL;
   33837           0 :     result.data = NULL;
   33838           0 :     return result;
   33839             : }
   33840             : 
   33841             : /* ObjectToMemviewSlice */
   33842           0 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_long__double(PyObject *obj, int writable_flag) {
   33843           0 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33844           0 :     __Pyx_BufFmt_StackElem stack[1];
   33845           0 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33846           0 :     int retcode;
   33847           0 :     if (obj == Py_None) {
   33848           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33849           0 :         return result;
   33850             :     }
   33851           0 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33852             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33853             :                                                  &__Pyx_TypeInfo_long__double, stack,
   33854             :                                                  &result, obj);
   33855           0 :     if (unlikely(retcode == -1))
   33856           0 :         goto __pyx_fail;
   33857           0 :     return result;
   33858           0 : __pyx_fail:
   33859           0 :     result.memview = NULL;
   33860           0 :     result.data = NULL;
   33861           0 :     return result;
   33862             : }
   33863             : 
   33864             : /* ObjectToMemviewSlice */
   33865           0 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc___pyx_t_long_double_complex(PyObject *obj, int writable_flag) {
   33866           0 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33867           0 :     __Pyx_BufFmt_StackElem stack[1];
   33868           0 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33869           0 :     int retcode;
   33870           0 :     if (obj == Py_None) {
   33871           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33872           0 :         return result;
   33873             :     }
   33874           0 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33875             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33876             :                                                  &__Pyx_TypeInfo___pyx_t_long_double_complex, stack,
   33877             :                                                  &result, obj);
   33878           0 :     if (unlikely(retcode == -1))
   33879           0 :         goto __pyx_fail;
   33880           0 :     return result;
   33881           0 : __pyx_fail:
   33882           0 :     result.memview = NULL;
   33883           0 :     result.data = NULL;
   33884           0 :     return result;
   33885             : }
   33886             : 
   33887             : /* ObjectToMemviewSlice */
   33888           5 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_object(PyObject *obj, int writable_flag) {
   33889           5 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33890           5 :     __Pyx_BufFmt_StackElem stack[1];
   33891           5 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33892           5 :     int retcode;
   33893           5 :     if (obj == Py_None) {
   33894           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33895           0 :         return result;
   33896             :     }
   33897           5 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33898             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2,
   33899             :                                                  &__Pyx_TypeInfo_object, stack,
   33900             :                                                  &result, obj);
   33901           5 :     if (unlikely(retcode == -1))
   33902           0 :         goto __pyx_fail;
   33903           5 :     return result;
   33904           0 : __pyx_fail:
   33905           0 :     result.memview = NULL;
   33906           0 :     result.data = NULL;
   33907           0 :     return result;
   33908             : }
   33909             : 
   33910             : /* ObjectToMemviewSlice */
   33911           2 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_object(PyObject *obj, int writable_flag) {
   33912           2 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33913           2 :     __Pyx_BufFmt_StackElem stack[1];
   33914           2 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33915           2 :     int retcode;
   33916           2 :     if (obj == Py_None) {
   33917           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33918           0 :         return result;
   33919             :     }
   33920           2 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33921             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   33922             :                                                  &__Pyx_TypeInfo_object, stack,
   33923             :                                                  &result, obj);
   33924           2 :     if (unlikely(retcode == -1))
   33925           0 :         goto __pyx_fail;
   33926           2 :     return result;
   33927           0 : __pyx_fail:
   33928           0 :     result.memview = NULL;
   33929           0 :     result.data = NULL;
   33930           0 :     return result;
   33931             : }
   33932             : 
   33933             : /* ObjectToMemviewSlice */
   33934          16 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_float(PyObject *obj, int writable_flag) {
   33935          16 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33936          16 :     __Pyx_BufFmt_StackElem stack[1];
   33937          16 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33938          16 :     int retcode;
   33939          16 :     if (obj == Py_None) {
   33940           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33941           0 :         return result;
   33942             :     }
   33943          16 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33944             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   33945             :                                                  &__Pyx_TypeInfo_float, stack,
   33946             :                                                  &result, obj);
   33947          16 :     if (unlikely(retcode == -1))
   33948           0 :         goto __pyx_fail;
   33949          16 :     return result;
   33950           0 : __pyx_fail:
   33951           0 :     result.memview = NULL;
   33952           0 :     result.data = NULL;
   33953           0 :     return result;
   33954             : }
   33955             : 
   33956             : /* ObjectToMemviewSlice */
   33957           0 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_float_complex(PyObject *obj, int writable_flag) {
   33958           0 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33959           0 :     __Pyx_BufFmt_StackElem stack[1];
   33960           0 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33961           0 :     int retcode;
   33962           0 :     if (obj == Py_None) {
   33963           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33964           0 :         return result;
   33965             :     }
   33966           0 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33967             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   33968             :                                                  &__Pyx_TypeInfo___pyx_t_float_complex, stack,
   33969             :                                                  &result, obj);
   33970           0 :     if (unlikely(retcode == -1))
   33971           0 :         goto __pyx_fail;
   33972           0 :     return result;
   33973           0 : __pyx_fail:
   33974           0 :     result.memview = NULL;
   33975           0 :     result.data = NULL;
   33976           0 :     return result;
   33977             : }
   33978             : 
   33979             : /* ObjectToMemviewSlice */
   33980          89 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_double(PyObject *obj, int writable_flag) {
   33981          89 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   33982          89 :     __Pyx_BufFmt_StackElem stack[1];
   33983          89 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   33984          89 :     int retcode;
   33985          89 :     if (obj == Py_None) {
   33986           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   33987           0 :         return result;
   33988             :     }
   33989          89 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   33990             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   33991             :                                                  &__Pyx_TypeInfo_double, stack,
   33992             :                                                  &result, obj);
   33993          89 :     if (unlikely(retcode == -1))
   33994           0 :         goto __pyx_fail;
   33995          89 :     return result;
   33996           0 : __pyx_fail:
   33997           0 :     result.memview = NULL;
   33998           0 :     result.data = NULL;
   33999           0 :     return result;
   34000             : }
   34001             : 
   34002             : /* ObjectToMemviewSlice */
   34003          28 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_double_complex(PyObject *obj, int writable_flag) {
   34004          28 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   34005          28 :     __Pyx_BufFmt_StackElem stack[1];
   34006          28 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   34007          28 :     int retcode;
   34008          28 :     if (obj == Py_None) {
   34009           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   34010           0 :         return result;
   34011             :     }
   34012          28 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   34013             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   34014             :                                                  &__Pyx_TypeInfo___pyx_t_double_complex, stack,
   34015             :                                                  &result, obj);
   34016          28 :     if (unlikely(retcode == -1))
   34017           0 :         goto __pyx_fail;
   34018          28 :     return result;
   34019           0 : __pyx_fail:
   34020           0 :     result.memview = NULL;
   34021           0 :     result.data = NULL;
   34022           0 :     return result;
   34023             : }
   34024             : 
   34025             : /* ObjectToMemviewSlice */
   34026           0 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_long__double(PyObject *obj, int writable_flag) {
   34027           0 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   34028           0 :     __Pyx_BufFmt_StackElem stack[1];
   34029           0 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   34030           0 :     int retcode;
   34031           0 :     if (obj == Py_None) {
   34032           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   34033           0 :         return result;
   34034             :     }
   34035           0 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   34036             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   34037             :                                                  &__Pyx_TypeInfo_long__double, stack,
   34038             :                                                  &result, obj);
   34039           0 :     if (unlikely(retcode == -1))
   34040           0 :         goto __pyx_fail;
   34041           0 :     return result;
   34042           0 : __pyx_fail:
   34043           0 :     result.memview = NULL;
   34044           0 :     result.data = NULL;
   34045           0 :     return result;
   34046             : }
   34047             : 
   34048             : /* ObjectToMemviewSlice */
   34049           0 :   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_d_dc___pyx_t_long_double_complex(PyObject *obj, int writable_flag) {
   34050           0 :     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
   34051           0 :     __Pyx_BufFmt_StackElem stack[1];
   34052           0 :     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
   34053           0 :     int retcode;
   34054           0 :     if (obj == Py_None) {
   34055           0 :         result.memview = (struct __pyx_memoryview_obj *) Py_None;
   34056           0 :         return result;
   34057             :     }
   34058           0 :     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG,
   34059             :                                                  (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 3,
   34060             :                                                  &__Pyx_TypeInfo___pyx_t_long_double_complex, stack,
   34061             :                                                  &result, obj);
   34062           0 :     if (unlikely(retcode == -1))
   34063           0 :         goto __pyx_fail;
   34064           0 :     return result;
   34065           0 : __pyx_fail:
   34066           0 :     result.memview = NULL;
   34067           0 :     result.data = NULL;
   34068           0 :     return result;
   34069             : }
   34070             : 
   34071             : /* PyUCS4InUnicode */
   34072             :   #if PY_VERSION_HEX < 0x03090000 || (defined(PyUnicode_WCHAR_KIND) && defined(PyUnicode_AS_UNICODE))
   34073             : #if PY_VERSION_HEX < 0x03090000
   34074             : #define __Pyx_PyUnicode_AS_UNICODE(op) PyUnicode_AS_UNICODE(op)
   34075             : #define __Pyx_PyUnicode_GET_SIZE(op) PyUnicode_GET_SIZE(op)
   34076             : #else
   34077             : #define __Pyx_PyUnicode_AS_UNICODE(op) (((PyASCIIObject *)(op))->wstr)
   34078             : #define __Pyx_PyUnicode_GET_SIZE(op) ((PyCompactUnicodeObject *)(op))->wstr_length
   34079             : #endif
   34080             : #if !defined(Py_UNICODE_SIZE) || Py_UNICODE_SIZE == 2
   34081             : static int __Pyx_PyUnicodeBufferContainsUCS4_SP(Py_UNICODE* buffer, Py_ssize_t length, Py_UCS4 character) {
   34082             :     Py_UNICODE high_val, low_val;
   34083             :     Py_UNICODE* pos;
   34084             :     high_val = (Py_UNICODE) (0xD800 | (((character - 0x10000) >> 10) & ((1<<10)-1)));
   34085             :     low_val  = (Py_UNICODE) (0xDC00 | ( (character - 0x10000)        & ((1<<10)-1)));
   34086             :     for (pos=buffer; pos < buffer+length-1; pos++) {
   34087             :         if (unlikely((high_val == pos[0]) & (low_val == pos[1]))) return 1;
   34088             :     }
   34089             :     return 0;
   34090             : }
   34091             : #endif
   34092             : static int __Pyx_PyUnicodeBufferContainsUCS4_BMP(Py_UNICODE* buffer, Py_ssize_t length, Py_UCS4 character) {
   34093             :     Py_UNICODE uchar;
   34094             :     Py_UNICODE* pos;
   34095             :     uchar = (Py_UNICODE) character;
   34096             :     for (pos=buffer; pos < buffer+length; pos++) {
   34097             :         if (unlikely(uchar == pos[0])) return 1;
   34098             :     }
   34099             :     return 0;
   34100             : }
   34101             : #endif
   34102             : static CYTHON_INLINE int __Pyx_UnicodeContainsUCS4(PyObject* unicode, Py_UCS4 character) {
   34103             : #if CYTHON_PEP393_ENABLED
   34104             :     const int kind = PyUnicode_KIND(unicode);
   34105             :     #ifdef PyUnicode_WCHAR_KIND
   34106             :     if (likely(kind != PyUnicode_WCHAR_KIND))
   34107             :     #endif
   34108             :     {
   34109             :         Py_ssize_t i;
   34110             :         const void* udata = PyUnicode_DATA(unicode);
   34111             :         const Py_ssize_t length = PyUnicode_GET_LENGTH(unicode);
   34112             :         for (i=0; i < length; i++) {
   34113             :             if (unlikely(character == PyUnicode_READ(kind, udata, i))) return 1;
   34114             :         }
   34115             :         return 0;
   34116             :     }
   34117             : #elif PY_VERSION_HEX >= 0x03090000
   34118             :     #error Cannot use "UChar in Unicode" in Python 3.9 without PEP-393 unicode strings.
   34119             : #elif !defined(PyUnicode_AS_UNICODE)
   34120             :     #error Cannot use "UChar in Unicode" in Python < 3.9 without Py_UNICODE support.
   34121             : #endif
   34122             : #if PY_VERSION_HEX < 0x03090000 || (defined(PyUnicode_WCHAR_KIND) && defined(PyUnicode_AS_UNICODE))
   34123             : #if !defined(Py_UNICODE_SIZE) || Py_UNICODE_SIZE == 2
   34124             :     if ((sizeof(Py_UNICODE) == 2) && unlikely(character > 65535)) {
   34125             :         return __Pyx_PyUnicodeBufferContainsUCS4_SP(
   34126             :             __Pyx_PyUnicode_AS_UNICODE(unicode),
   34127             :             __Pyx_PyUnicode_GET_SIZE(unicode),
   34128             :             character);
   34129             :     } else
   34130             : #endif
   34131             :     {
   34132             :         return __Pyx_PyUnicodeBufferContainsUCS4_BMP(
   34133             :             __Pyx_PyUnicode_AS_UNICODE(unicode),
   34134             :             __Pyx_PyUnicode_GET_SIZE(unicode),
   34135             :             character);
   34136             :     }
   34137             : #endif
   34138             : }
   34139             : 
   34140             : /* MemviewObjectToObject */
   34141           0 :   static PyObject *__pyx_memview_get_object(const char *itemp) {
   34142           0 :     PyObject *result = *(PyObject **) itemp;
   34143           0 :     Py_INCREF(result);
   34144           0 :     return result;
   34145             : }
   34146           0 : static int __pyx_memview_set_object(const char *itemp, PyObject *obj) {
   34147           0 :     Py_INCREF(obj);
   34148           0 :     Py_DECREF(*(PyObject **) itemp);
   34149           0 :     *(PyObject **) itemp = obj;
   34150           0 :     return 1;
   34151             : }
   34152             : 
   34153             : /* MemviewSliceCopyTemplate */
   34154             :   static __Pyx_memviewslice
   34155           0 : __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
   34156             :                                  const char *mode, int ndim,
   34157             :                                  size_t sizeof_dtype, int contig_flag,
   34158             :                                  int dtype_is_object)
   34159             : {
   34160             :     __Pyx_RefNannyDeclarations
   34161           0 :     int i;
   34162           0 :     __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } };
   34163           0 :     struct __pyx_memoryview_obj *from_memview = from_mvs->memview;
   34164           0 :     Py_buffer *buf = &from_memview->view;
   34165           0 :     PyObject *shape_tuple = NULL;
   34166           0 :     PyObject *temp_int = NULL;
   34167           0 :     struct __pyx_array_obj *array_obj = NULL;
   34168           0 :     struct __pyx_memoryview_obj *memview_obj = NULL;
   34169           0 :     __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0);
   34170           0 :     for (i = 0; i < ndim; i++) {
   34171           0 :         if (unlikely(from_mvs->suboffsets[i] >= 0)) {
   34172           0 :             PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with "
   34173             :                                            "indirect dimensions (axis %d)", i);
   34174           0 :             goto fail;
   34175             :         }
   34176             :     }
   34177           0 :     shape_tuple = PyTuple_New(ndim);
   34178           0 :     if (unlikely(!shape_tuple)) {
   34179           0 :         goto fail;
   34180             :     }
   34181             :     __Pyx_GOTREF(shape_tuple);
   34182           0 :     for(i = 0; i < ndim; i++) {
   34183           0 :         temp_int = PyInt_FromSsize_t(from_mvs->shape[i]);
   34184           0 :         if(unlikely(!temp_int)) {
   34185           0 :             goto fail;
   34186             :         } else {
   34187           0 :             PyTuple_SET_ITEM(shape_tuple, i, temp_int);
   34188           0 :             temp_int = NULL;
   34189             :         }
   34190             :     }
   34191           0 :     array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL);
   34192           0 :     if (unlikely(!array_obj)) {
   34193           0 :         goto fail;
   34194             :     }
   34195           0 :     __Pyx_GOTREF(array_obj);
   34196           0 :     memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
   34197             :                                     (PyObject *) array_obj, contig_flag,
   34198             :                                     dtype_is_object,
   34199           0 :                                     from_mvs->memview->typeinfo);
   34200           0 :     if (unlikely(!memview_obj))
   34201           0 :         goto fail;
   34202           0 :     if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0))
   34203           0 :         goto fail;
   34204           0 :     if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim,
   34205             :                                                 dtype_is_object) < 0))
   34206           0 :         goto fail;
   34207           0 :     goto no_fail;
   34208           0 : fail:
   34209           0 :     __Pyx_XDECREF(new_mvs.memview);
   34210           0 :     new_mvs.memview = NULL;
   34211           0 :     new_mvs.data = NULL;
   34212           0 : no_fail:
   34213           0 :     __Pyx_XDECREF(shape_tuple);
   34214           0 :     __Pyx_XDECREF(temp_int);
   34215           0 :     __Pyx_XDECREF(array_obj);
   34216           0 :     __Pyx_RefNannyFinishContext();
   34217           0 :     return new_mvs;
   34218             : }
   34219             : 
   34220             : /* MemviewSliceInit */
   34221             :   static int
   34222         406 : __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
   34223             :                         int ndim,
   34224             :                         __Pyx_memviewslice *memviewslice,
   34225             :                         int memview_is_new_reference)
   34226             : {
   34227             :     __Pyx_RefNannyDeclarations
   34228         406 :     int i, retval=-1;
   34229         406 :     Py_buffer *buf = &memview->view;
   34230         406 :     __Pyx_RefNannySetupContext("init_memviewslice", 0);
   34231         406 :     if (unlikely(memviewslice->memview || memviewslice->data)) {
   34232           0 :         PyErr_SetString(PyExc_ValueError,
   34233             :             "memviewslice is already initialized!");
   34234           0 :         goto fail;
   34235             :     }
   34236         406 :     if (buf->strides) {
   34237        1353 :         for (i = 0; i < ndim; i++) {
   34238         947 :             memviewslice->strides[i] = buf->strides[i];
   34239             :         }
   34240             :     } else {
   34241           0 :         Py_ssize_t stride = buf->itemsize;
   34242           0 :         for (i = ndim - 1; i >= 0; i--) {
   34243           0 :             memviewslice->strides[i] = stride;
   34244           0 :             stride *= buf->shape[i];
   34245             :         }
   34246             :     }
   34247        1353 :     for (i = 0; i < ndim; i++) {
   34248         947 :         memviewslice->shape[i]   = buf->shape[i];
   34249         947 :         if (buf->suboffsets) {
   34250           0 :             memviewslice->suboffsets[i] = buf->suboffsets[i];
   34251             :         } else {
   34252         947 :             memviewslice->suboffsets[i] = -1;
   34253             :         }
   34254             :     }
   34255         406 :     memviewslice->memview = memview;
   34256         406 :     memviewslice->data = (char *)buf->buf;
   34257         406 :     if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) {
   34258           3 :         Py_INCREF(memview);
   34259             :     }
   34260         406 :     retval = 0;
   34261         406 :     goto no_fail;
   34262           0 : fail:
   34263           0 :     memviewslice->memview = 0;
   34264           0 :     memviewslice->data = 0;
   34265           0 :     retval = -1;
   34266         406 : no_fail:
   34267         406 :     __Pyx_RefNannyFinishContext();
   34268         406 :     return retval;
   34269             : }
   34270             : #ifndef Py_NO_RETURN
   34271             : #define Py_NO_RETURN
   34272             : #endif
   34273           0 : static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN {
   34274           0 :     va_list vargs;
   34275           0 :     char msg[200];
   34276             : #if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES)
   34277           0 :     va_start(vargs, fmt);
   34278             : #else
   34279             :     va_start(vargs);
   34280             : #endif
   34281           0 :     vsnprintf(msg, 200, fmt, vargs);
   34282           0 :     va_end(vargs);
   34283           0 :     Py_FatalError(msg);
   34284             : }
   34285             : static CYTHON_INLINE int
   34286             : __pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count,
   34287             :                                    PyThread_type_lock lock)
   34288             : {
   34289             :     int result;
   34290             :     PyThread_acquire_lock(lock, 1);
   34291             :     result = (*acquisition_count)++;
   34292             :     PyThread_release_lock(lock);
   34293             :     return result;
   34294             : }
   34295             : static CYTHON_INLINE int
   34296             : __pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count,
   34297             :                                    PyThread_type_lock lock)
   34298             : {
   34299             :     int result;
   34300             :     PyThread_acquire_lock(lock, 1);
   34301             :     result = (*acquisition_count)--;
   34302             :     PyThread_release_lock(lock);
   34303             :     return result;
   34304             : }
   34305             : static CYTHON_INLINE void
   34306        1412 : __Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno)
   34307             : {
   34308        1412 :     __pyx_nonatomic_int_type old_acquisition_count;
   34309        1412 :     struct __pyx_memoryview_obj *memview = memslice->memview;
   34310        1412 :     if (unlikely(!memview || (PyObject *) memview == Py_None)) {
   34311             :         return;
   34312             :     }
   34313        1412 :     old_acquisition_count = __pyx_add_acquisition_count(memview);
   34314        1412 :     if (unlikely(old_acquisition_count <= 0)) {
   34315           0 :         if (likely(old_acquisition_count == 0)) {
   34316           0 :             if (have_gil) {
   34317           0 :                 Py_INCREF((PyObject *) memview);
   34318             :             } else {
   34319           0 :                 PyGILState_STATE _gilstate = PyGILState_Ensure();
   34320           0 :                 Py_INCREF((PyObject *) memview);
   34321           0 :                 PyGILState_Release(_gilstate);
   34322             :             }
   34323             :         } else {
   34324           0 :             __pyx_fatalerror("Acquisition count is %d (line %d)",
   34325             :                              old_acquisition_count+1, lineno);
   34326             :         }
   34327             :     }
   34328             : }
   34329        1951 : static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice,
   34330             :                                              int have_gil, int lineno) {
   34331        1951 :     __pyx_nonatomic_int_type old_acquisition_count;
   34332        1951 :     struct __pyx_memoryview_obj *memview = memslice->memview;
   34333        1951 :     if (unlikely(!memview || (PyObject *) memview == Py_None)) {
   34334         133 :         memslice->memview = NULL;
   34335         133 :         return;
   34336             :     }
   34337        1818 :     old_acquisition_count = __pyx_sub_acquisition_count(memview);
   34338        1818 :     memslice->data = NULL;
   34339        1818 :     if (likely(old_acquisition_count > 1)) {
   34340        1412 :         memslice->memview = NULL;
   34341         406 :     } else if (likely(old_acquisition_count == 1)) {
   34342         406 :         if (have_gil) {
   34343         406 :             Py_CLEAR(memslice->memview);
   34344             :         } else {
   34345           0 :             PyGILState_STATE _gilstate = PyGILState_Ensure();
   34346           0 :             Py_CLEAR(memslice->memview);
   34347           0 :             PyGILState_Release(_gilstate);
   34348             :         }
   34349             :     } else {
   34350           0 :         __pyx_fatalerror("Acquisition count is %d (line %d)",
   34351             :                          old_acquisition_count-1, lineno);
   34352             :     }
   34353             : }
   34354             : 
   34355             : /* CIntToPy */
   34356           0 :   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
   34357             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34358             : #pragma GCC diagnostic push
   34359             : #pragma GCC diagnostic ignored "-Wconversion"
   34360             : #endif
   34361           0 :     const long neg_one = (long) -1, const_zero = (long) 0;
   34362             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34363             : #pragma GCC diagnostic pop
   34364             : #endif
   34365           0 :     const int is_unsigned = neg_one > const_zero;
   34366           0 :     if (is_unsigned) {
   34367             :         if (sizeof(long) < sizeof(long)) {
   34368             :             return PyInt_FromLong((long) value);
   34369             :         } else if (sizeof(long) <= sizeof(unsigned long)) {
   34370             :             return PyLong_FromUnsignedLong((unsigned long) value);
   34371             : #ifdef HAVE_LONG_LONG
   34372             :         } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
   34373             :             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
   34374             : #endif
   34375             :         }
   34376             :     } else {
   34377           0 :         if (sizeof(long) <= sizeof(long)) {
   34378           0 :             return PyInt_FromLong((long) value);
   34379             : #ifdef HAVE_LONG_LONG
   34380             :         } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
   34381             :             return PyLong_FromLongLong((PY_LONG_LONG) value);
   34382             : #endif
   34383             :         }
   34384             :     }
   34385             :     {
   34386             :         unsigned char *bytes = (unsigned char *)&value;
   34387             : #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
   34388             :         if (is_unsigned) {
   34389             :             return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
   34390             :         } else {
   34391             :             return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
   34392             :         }
   34393             : #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
   34394             :         int one = 1; int little = (int)*(unsigned char *)&one;
   34395             :         return _PyLong_FromByteArray(bytes, sizeof(long),
   34396             :                                      little, !is_unsigned);
   34397             : #else
   34398             :         int one = 1; int little = (int)*(unsigned char *)&one;
   34399             :         PyObject *from_bytes, *result = NULL;
   34400             :         PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
   34401             :         from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
   34402             :         if (!from_bytes) return NULL;
   34403             :         py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
   34404             :         if (!py_bytes) goto limited_bad;
   34405             :         order_str = PyUnicode_FromString(little ? "little" : "big");
   34406             :         if (!order_str) goto limited_bad;
   34407             :         arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
   34408             :         if (!arg_tuple) goto limited_bad;
   34409             :         if (!is_unsigned) {
   34410             :             kwds = PyDict_New();
   34411             :             if (!kwds) goto limited_bad;
   34412             :             if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
   34413             :         }
   34414             :         result = PyObject_Call(from_bytes, arg_tuple, kwds);
   34415             :         limited_bad:
   34416             :         Py_XDECREF(kwds);
   34417             :         Py_XDECREF(arg_tuple);
   34418             :         Py_XDECREF(order_str);
   34419             :         Py_XDECREF(py_bytes);
   34420             :         Py_XDECREF(from_bytes);
   34421             :         return result;
   34422             : #endif
   34423             :     }
   34424             : }
   34425             : 
   34426             : /* ImportNumPyArray */
   34427           1 :   static PyObject* __Pyx__ImportNumPyArray(void) {
   34428           1 :     PyObject *numpy_module, *ndarray_object = NULL;
   34429           1 :     numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0);
   34430           1 :     if (likely(numpy_module)) {
   34431           1 :         ndarray_object = PyObject_GetAttrString(numpy_module, "ndarray");
   34432           1 :         Py_DECREF(numpy_module);
   34433             :     }
   34434           1 :     if (unlikely(!ndarray_object)) {
   34435           0 :         PyErr_Clear();
   34436             :     }
   34437           1 :     if (unlikely(!ndarray_object || !PyObject_TypeCheck(ndarray_object, &PyType_Type))) {
   34438           0 :         Py_XDECREF(ndarray_object);
   34439           0 :         Py_INCREF(Py_None);
   34440             :         ndarray_object = Py_None;
   34441             :     }
   34442           1 :     return ndarray_object;
   34443             : }
   34444         134 : static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {
   34445         134 :     if (unlikely(!__pyx_numpy_ndarray)) {
   34446           1 :         __pyx_numpy_ndarray = __Pyx__ImportNumPyArray();
   34447             :     }
   34448         134 :     Py_INCREF(__pyx_numpy_ndarray);
   34449         134 :     return __pyx_numpy_ndarray;
   34450             : }
   34451             : 
   34452             : /* CIntFromPyVerify */
   34453             :   #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
   34454             :     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
   34455             : #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
   34456             :     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
   34457             : #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
   34458             :     {\
   34459             :         func_type value = func_value;\
   34460             :         if (sizeof(target_type) < sizeof(func_type)) {\
   34461             :             if (unlikely(value != (func_type) (target_type) value)) {\
   34462             :                 func_type zero = 0;\
   34463             :                 if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
   34464             :                     return (target_type) -1;\
   34465             :                 if (is_unsigned && unlikely(value < zero))\
   34466             :                     goto raise_neg_overflow;\
   34467             :                 else\
   34468             :                     goto raise_overflow;\
   34469             :             }\
   34470             :         }\
   34471             :         return (target_type) value;\
   34472             :     }
   34473             : 
   34474             : /* CIntFromPy */
   34475         408 :   static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
   34476             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34477             : #pragma GCC diagnostic push
   34478             : #pragma GCC diagnostic ignored "-Wconversion"
   34479             : #endif
   34480         408 :     const int neg_one = (int) -1, const_zero = (int) 0;
   34481             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34482             : #pragma GCC diagnostic pop
   34483             : #endif
   34484         408 :     const int is_unsigned = neg_one > const_zero;
   34485             : #if PY_MAJOR_VERSION < 3
   34486             :     if (likely(PyInt_Check(x))) {
   34487             :         if ((sizeof(int) < sizeof(long))) {
   34488             :             __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
   34489             :         } else {
   34490             :             long val = PyInt_AS_LONG(x);
   34491             :             if (is_unsigned && unlikely(val < 0)) {
   34492             :                 goto raise_neg_overflow;
   34493             :             }
   34494             :             return (int) val;
   34495             :         }
   34496             :     }
   34497             : #endif
   34498         408 :     if (unlikely(!PyLong_Check(x))) {
   34499           0 :         int val;
   34500           0 :         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
   34501           0 :         if (!tmp) return (int) -1;
   34502           0 :         val = __Pyx_PyInt_As_int(tmp);
   34503           0 :         Py_DECREF(tmp);
   34504           0 :         return val;
   34505             :     }
   34506         408 :     if (is_unsigned) {
   34507             : #if CYTHON_USE_PYLONG_INTERNALS
   34508             :         if (unlikely(__Pyx_PyLong_IsNeg(x))) {
   34509             :             goto raise_neg_overflow;
   34510             :         } else if (__Pyx_PyLong_IsCompact(x)) {
   34511             :             __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
   34512             :         } else {
   34513             :             const digit* digits = __Pyx_PyLong_Digits(x);
   34514             :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   34515             :             switch (__Pyx_PyLong_DigitCount(x)) {
   34516             :                 case 2:
   34517             :                     if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
   34518             :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34519             :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34520             :                         } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
   34521             :                             return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
   34522             :                         }
   34523             :                     }
   34524             :                     break;
   34525             :                 case 3:
   34526             :                     if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
   34527             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34528             :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34529             :                         } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
   34530             :                             return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
   34531             :                         }
   34532             :                     }
   34533             :                     break;
   34534             :                 case 4:
   34535             :                     if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
   34536             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34537             :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34538             :                         } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
   34539             :                             return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
   34540             :                         }
   34541             :                     }
   34542             :                     break;
   34543             :             }
   34544             :         }
   34545             : #endif
   34546             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
   34547             :         if (unlikely(Py_SIZE(x) < 0)) {
   34548             :             goto raise_neg_overflow;
   34549             :         }
   34550             : #else
   34551             :         {
   34552             :             int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
   34553             :             if (unlikely(result < 0))
   34554             :                 return (int) -1;
   34555             :             if (unlikely(result == 1))
   34556             :                 goto raise_neg_overflow;
   34557             :         }
   34558             : #endif
   34559             :         if ((sizeof(int) <= sizeof(unsigned long))) {
   34560             :             __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
   34561             : #ifdef HAVE_LONG_LONG
   34562             :         } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
   34563             :             __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
   34564             : #endif
   34565             :         }
   34566             :     } else {
   34567             : #if CYTHON_USE_PYLONG_INTERNALS
   34568         408 :         if (__Pyx_PyLong_IsCompact(x)) {
   34569         408 :             __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
   34570             :         } else {
   34571           0 :             const digit* digits = __Pyx_PyLong_Digits(x);
   34572           0 :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   34573           0 :             switch (__Pyx_PyLong_SignedDigitCount(x)) {
   34574             :                 case -2:
   34575           0 :                     if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
   34576           0 :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34577           0 :                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34578             :                         } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
   34579             :                             return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34580             :                         }
   34581             :                     }
   34582             :                     break;
   34583             :                 case 2:
   34584           0 :                     if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
   34585           0 :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34586           0 :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34587             :                         } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
   34588             :                             return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34589             :                         }
   34590             :                     }
   34591             :                     break;
   34592             :                 case -3:
   34593             :                     if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
   34594             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34595             :                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34596             :                         } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
   34597             :                             return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34598             :                         }
   34599             :                     }
   34600             :                     break;
   34601             :                 case 3:
   34602             :                     if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
   34603             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34604             :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34605             :                         } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
   34606             :                             return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34607             :                         }
   34608             :                     }
   34609             :                     break;
   34610             :                 case -4:
   34611             :                     if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
   34612             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34613             :                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34614             :                         } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
   34615             :                             return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34616             :                         }
   34617             :                     }
   34618             :                     break;
   34619             :                 case 4:
   34620             :                     if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
   34621             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34622             :                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34623             :                         } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
   34624             :                             return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
   34625             :                         }
   34626             :                     }
   34627             :                     break;
   34628             :             }
   34629             :         }
   34630             : #endif
   34631           0 :         if ((sizeof(int) <= sizeof(long))) {
   34632           0 :             __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
   34633             : #ifdef HAVE_LONG_LONG
   34634             :         } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
   34635             :             __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
   34636             : #endif
   34637             :         }
   34638             :     }
   34639             :     {
   34640             :         int val;
   34641             :         int ret = -1;
   34642             : #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
   34643             :         Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
   34644             :             x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
   34645             :         if (unlikely(bytes_copied == -1)) {
   34646             :         } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
   34647             :             goto raise_overflow;
   34648             :         } else {
   34649             :             ret = 0;
   34650             :         }
   34651             : #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
   34652             :         int one = 1; int is_little = (int)*(unsigned char *)&one;
   34653             :         unsigned char *bytes = (unsigned char *)&val;
   34654             :         ret = _PyLong_AsByteArray((PyLongObject *)x,
   34655             :                                     bytes, sizeof(val),
   34656             :                                     is_little, !is_unsigned);
   34657             : #else
   34658             :         PyObject *v;
   34659             :         PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
   34660             :         int bits, remaining_bits, is_negative = 0;
   34661             :         int chunk_size = (sizeof(long) < 8) ? 30 : 62;
   34662             :         if (likely(PyLong_CheckExact(x))) {
   34663             :             v = __Pyx_NewRef(x);
   34664             :         } else {
   34665             :             v = PyNumber_Long(x);
   34666             :             if (unlikely(!v)) return (int) -1;
   34667             :             assert(PyLong_CheckExact(v));
   34668             :         }
   34669             :         {
   34670             :             int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
   34671             :             if (unlikely(result < 0)) {
   34672             :                 Py_DECREF(v);
   34673             :                 return (int) -1;
   34674             :             }
   34675             :             is_negative = result == 1;
   34676             :         }
   34677             :         if (is_unsigned && unlikely(is_negative)) {
   34678             :             Py_DECREF(v);
   34679             :             goto raise_neg_overflow;
   34680             :         } else if (is_negative) {
   34681             :             stepval = PyNumber_Invert(v);
   34682             :             Py_DECREF(v);
   34683             :             if (unlikely(!stepval))
   34684             :                 return (int) -1;
   34685             :         } else {
   34686             :             stepval = v;
   34687             :         }
   34688             :         v = NULL;
   34689             :         val = (int) 0;
   34690             :         mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
   34691             :         shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
   34692             :         for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
   34693             :             PyObject *tmp, *digit;
   34694             :             long idigit;
   34695             :             digit = PyNumber_And(stepval, mask);
   34696             :             if (unlikely(!digit)) goto done;
   34697             :             idigit = PyLong_AsLong(digit);
   34698             :             Py_DECREF(digit);
   34699             :             if (unlikely(idigit < 0)) goto done;
   34700             :             val |= ((int) idigit) << bits;
   34701             :             tmp = PyNumber_Rshift(stepval, shift);
   34702             :             if (unlikely(!tmp)) goto done;
   34703             :             Py_DECREF(stepval); stepval = tmp;
   34704             :         }
   34705             :         Py_DECREF(shift); shift = NULL;
   34706             :         Py_DECREF(mask); mask = NULL;
   34707             :         {
   34708             :             long idigit = PyLong_AsLong(stepval);
   34709             :             if (unlikely(idigit < 0)) goto done;
   34710             :             remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
   34711             :             if (unlikely(idigit >= (1L << remaining_bits)))
   34712             :                 goto raise_overflow;
   34713             :             val |= ((int) idigit) << bits;
   34714             :         }
   34715             :         if (!is_unsigned) {
   34716             :             if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
   34717             :                 goto raise_overflow;
   34718             :             if (is_negative)
   34719             :                 val = ~val;
   34720             :         }
   34721             :         ret = 0;
   34722             :     done:
   34723             :         Py_XDECREF(shift);
   34724             :         Py_XDECREF(mask);
   34725             :         Py_XDECREF(stepval);
   34726             : #endif
   34727             :         if (unlikely(ret))
   34728             :             return (int) -1;
   34729             :         return val;
   34730             :     }
   34731           0 : raise_overflow:
   34732           0 :     PyErr_SetString(PyExc_OverflowError,
   34733             :         "value too large to convert to int");
   34734           0 :     return (int) -1;
   34735             : raise_neg_overflow:
   34736             :     PyErr_SetString(PyExc_OverflowError,
   34737             :         "can't convert negative value to int");
   34738             :     return (int) -1;
   34739             : }
   34740             : 
   34741             : /* CIntFromPy */
   34742           0 :   static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
   34743             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34744             : #pragma GCC diagnostic push
   34745             : #pragma GCC diagnostic ignored "-Wconversion"
   34746             : #endif
   34747           0 :     const long neg_one = (long) -1, const_zero = (long) 0;
   34748             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   34749             : #pragma GCC diagnostic pop
   34750             : #endif
   34751           0 :     const int is_unsigned = neg_one > const_zero;
   34752             : #if PY_MAJOR_VERSION < 3
   34753             :     if (likely(PyInt_Check(x))) {
   34754             :         if ((sizeof(long) < sizeof(long))) {
   34755             :             __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
   34756             :         } else {
   34757             :             long val = PyInt_AS_LONG(x);
   34758             :             if (is_unsigned && unlikely(val < 0)) {
   34759             :                 goto raise_neg_overflow;
   34760             :             }
   34761             :             return (long) val;
   34762             :         }
   34763             :     }
   34764             : #endif
   34765           0 :     if (unlikely(!PyLong_Check(x))) {
   34766           0 :         long val;
   34767           0 :         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
   34768           0 :         if (!tmp) return (long) -1;
   34769           0 :         val = __Pyx_PyInt_As_long(tmp);
   34770           0 :         Py_DECREF(tmp);
   34771           0 :         return val;
   34772             :     }
   34773           0 :     if (is_unsigned) {
   34774             : #if CYTHON_USE_PYLONG_INTERNALS
   34775             :         if (unlikely(__Pyx_PyLong_IsNeg(x))) {
   34776             :             goto raise_neg_overflow;
   34777             :         } else if (__Pyx_PyLong_IsCompact(x)) {
   34778             :             __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
   34779             :         } else {
   34780             :             const digit* digits = __Pyx_PyLong_Digits(x);
   34781             :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   34782             :             switch (__Pyx_PyLong_DigitCount(x)) {
   34783             :                 case 2:
   34784             :                     if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
   34785             :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34786             :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34787             :                         } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
   34788             :                             return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
   34789             :                         }
   34790             :                     }
   34791             :                     break;
   34792             :                 case 3:
   34793             :                     if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
   34794             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34795             :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34796             :                         } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
   34797             :                             return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
   34798             :                         }
   34799             :                     }
   34800             :                     break;
   34801             :                 case 4:
   34802             :                     if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
   34803             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34804             :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34805             :                         } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
   34806             :                             return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
   34807             :                         }
   34808             :                     }
   34809             :                     break;
   34810             :             }
   34811             :         }
   34812             : #endif
   34813             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
   34814             :         if (unlikely(Py_SIZE(x) < 0)) {
   34815             :             goto raise_neg_overflow;
   34816             :         }
   34817             : #else
   34818             :         {
   34819             :             int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
   34820             :             if (unlikely(result < 0))
   34821             :                 return (long) -1;
   34822             :             if (unlikely(result == 1))
   34823             :                 goto raise_neg_overflow;
   34824             :         }
   34825             : #endif
   34826             :         if ((sizeof(long) <= sizeof(unsigned long))) {
   34827             :             __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
   34828             : #ifdef HAVE_LONG_LONG
   34829             :         } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
   34830             :             __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
   34831             : #endif
   34832             :         }
   34833             :     } else {
   34834             : #if CYTHON_USE_PYLONG_INTERNALS
   34835           0 :         if (__Pyx_PyLong_IsCompact(x)) {
   34836           0 :             __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
   34837             :         } else {
   34838           0 :             const digit* digits = __Pyx_PyLong_Digits(x);
   34839           0 :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   34840           0 :             switch (__Pyx_PyLong_SignedDigitCount(x)) {
   34841             :                 case -2:
   34842           0 :                     if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
   34843           0 :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34844           0 :                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34845             :                         } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
   34846             :                             return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34847             :                         }
   34848             :                     }
   34849             :                     break;
   34850             :                 case 2:
   34851           0 :                     if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
   34852           0 :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   34853           0 :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34854             :                         } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
   34855             :                             return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34856             :                         }
   34857             :                     }
   34858             :                     break;
   34859             :                 case -3:
   34860             :                     if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
   34861             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34862             :                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34863             :                         } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
   34864             :                             return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34865             :                         }
   34866             :                     }
   34867             :                     break;
   34868             :                 case 3:
   34869             :                     if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
   34870             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   34871             :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34872             :                         } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
   34873             :                             return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34874             :                         }
   34875             :                     }
   34876             :                     break;
   34877             :                 case -4:
   34878             :                     if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
   34879             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34880             :                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34881             :                         } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
   34882             :                             return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34883             :                         }
   34884             :                     }
   34885             :                     break;
   34886             :                 case 4:
   34887             :                     if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
   34888             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   34889             :                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   34890             :                         } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
   34891             :                             return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
   34892             :                         }
   34893             :                     }
   34894             :                     break;
   34895             :             }
   34896             :         }
   34897             : #endif
   34898           0 :         if ((sizeof(long) <= sizeof(long))) {
   34899           0 :             __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
   34900             : #ifdef HAVE_LONG_LONG
   34901             :         } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
   34902             :             __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
   34903             : #endif
   34904             :         }
   34905             :     }
   34906             :     {
   34907             :         long val;
   34908             :         int ret = -1;
   34909             : #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
   34910             :         Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
   34911             :             x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
   34912             :         if (unlikely(bytes_copied == -1)) {
   34913             :         } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
   34914             :             goto raise_overflow;
   34915             :         } else {
   34916             :             ret = 0;
   34917             :         }
   34918             : #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
   34919             :         int one = 1; int is_little = (int)*(unsigned char *)&one;
   34920             :         unsigned char *bytes = (unsigned char *)&val;
   34921             :         ret = _PyLong_AsByteArray((PyLongObject *)x,
   34922             :                                     bytes, sizeof(val),
   34923             :                                     is_little, !is_unsigned);
   34924             : #else
   34925             :         PyObject *v;
   34926             :         PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
   34927             :         int bits, remaining_bits, is_negative = 0;
   34928             :         int chunk_size = (sizeof(long) < 8) ? 30 : 62;
   34929             :         if (likely(PyLong_CheckExact(x))) {
   34930             :             v = __Pyx_NewRef(x);
   34931             :         } else {
   34932             :             v = PyNumber_Long(x);
   34933             :             if (unlikely(!v)) return (long) -1;
   34934             :             assert(PyLong_CheckExact(v));
   34935             :         }
   34936             :         {
   34937             :             int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
   34938             :             if (unlikely(result < 0)) {
   34939             :                 Py_DECREF(v);
   34940             :                 return (long) -1;
   34941             :             }
   34942             :             is_negative = result == 1;
   34943             :         }
   34944             :         if (is_unsigned && unlikely(is_negative)) {
   34945             :             Py_DECREF(v);
   34946             :             goto raise_neg_overflow;
   34947             :         } else if (is_negative) {
   34948             :             stepval = PyNumber_Invert(v);
   34949             :             Py_DECREF(v);
   34950             :             if (unlikely(!stepval))
   34951             :                 return (long) -1;
   34952             :         } else {
   34953             :             stepval = v;
   34954             :         }
   34955             :         v = NULL;
   34956             :         val = (long) 0;
   34957             :         mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
   34958             :         shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
   34959             :         for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
   34960             :             PyObject *tmp, *digit;
   34961             :             long idigit;
   34962             :             digit = PyNumber_And(stepval, mask);
   34963             :             if (unlikely(!digit)) goto done;
   34964             :             idigit = PyLong_AsLong(digit);
   34965             :             Py_DECREF(digit);
   34966             :             if (unlikely(idigit < 0)) goto done;
   34967             :             val |= ((long) idigit) << bits;
   34968             :             tmp = PyNumber_Rshift(stepval, shift);
   34969             :             if (unlikely(!tmp)) goto done;
   34970             :             Py_DECREF(stepval); stepval = tmp;
   34971             :         }
   34972             :         Py_DECREF(shift); shift = NULL;
   34973             :         Py_DECREF(mask); mask = NULL;
   34974             :         {
   34975             :             long idigit = PyLong_AsLong(stepval);
   34976             :             if (unlikely(idigit < 0)) goto done;
   34977             :             remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
   34978             :             if (unlikely(idigit >= (1L << remaining_bits)))
   34979             :                 goto raise_overflow;
   34980             :             val |= ((long) idigit) << bits;
   34981             :         }
   34982             :         if (!is_unsigned) {
   34983             :             if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
   34984             :                 goto raise_overflow;
   34985             :             if (is_negative)
   34986             :                 val = ~val;
   34987             :         }
   34988             :         ret = 0;
   34989             :     done:
   34990             :         Py_XDECREF(shift);
   34991             :         Py_XDECREF(mask);
   34992             :         Py_XDECREF(stepval);
   34993             : #endif
   34994             :         if (unlikely(ret))
   34995             :             return (long) -1;
   34996             :         return val;
   34997             :     }
   34998             : raise_overflow:
   34999             :     PyErr_SetString(PyExc_OverflowError,
   35000             :         "value too large to convert to long");
   35001             :     return (long) -1;
   35002             : raise_neg_overflow:
   35003             :     PyErr_SetString(PyExc_OverflowError,
   35004             :         "can't convert negative value to long");
   35005             :     return (long) -1;
   35006             : }
   35007             : 
   35008             : /* CIntToPy */
   35009         405 :   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
   35010             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   35011             : #pragma GCC diagnostic push
   35012             : #pragma GCC diagnostic ignored "-Wconversion"
   35013             : #endif
   35014         405 :     const int neg_one = (int) -1, const_zero = (int) 0;
   35015             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   35016             : #pragma GCC diagnostic pop
   35017             : #endif
   35018         405 :     const int is_unsigned = neg_one > const_zero;
   35019         405 :     if (is_unsigned) {
   35020             :         if (sizeof(int) < sizeof(long)) {
   35021             :             return PyInt_FromLong((long) value);
   35022             :         } else if (sizeof(int) <= sizeof(unsigned long)) {
   35023             :             return PyLong_FromUnsignedLong((unsigned long) value);
   35024             : #ifdef HAVE_LONG_LONG
   35025             :         } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
   35026             :             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
   35027             : #endif
   35028             :         }
   35029             :     } else {
   35030         405 :         if (sizeof(int) <= sizeof(long)) {
   35031         405 :             return PyInt_FromLong((long) value);
   35032             : #ifdef HAVE_LONG_LONG
   35033             :         } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
   35034             :             return PyLong_FromLongLong((PY_LONG_LONG) value);
   35035             : #endif
   35036             :         }
   35037             :     }
   35038             :     {
   35039             :         unsigned char *bytes = (unsigned char *)&value;
   35040             : #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
   35041             :         if (is_unsigned) {
   35042             :             return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
   35043             :         } else {
   35044             :             return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
   35045             :         }
   35046             : #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
   35047             :         int one = 1; int little = (int)*(unsigned char *)&one;
   35048             :         return _PyLong_FromByteArray(bytes, sizeof(int),
   35049             :                                      little, !is_unsigned);
   35050             : #else
   35051             :         int one = 1; int little = (int)*(unsigned char *)&one;
   35052             :         PyObject *from_bytes, *result = NULL;
   35053             :         PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
   35054             :         from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
   35055             :         if (!from_bytes) return NULL;
   35056             :         py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
   35057             :         if (!py_bytes) goto limited_bad;
   35058             :         order_str = PyUnicode_FromString(little ? "little" : "big");
   35059             :         if (!order_str) goto limited_bad;
   35060             :         arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
   35061             :         if (!arg_tuple) goto limited_bad;
   35062             :         if (!is_unsigned) {
   35063             :             kwds = PyDict_New();
   35064             :             if (!kwds) goto limited_bad;
   35065             :             if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
   35066             :         }
   35067             :         result = PyObject_Call(from_bytes, arg_tuple, kwds);
   35068             :         limited_bad:
   35069             :         Py_XDECREF(kwds);
   35070             :         Py_XDECREF(arg_tuple);
   35071             :         Py_XDECREF(order_str);
   35072             :         Py_XDECREF(py_bytes);
   35073             :         Py_XDECREF(from_bytes);
   35074             :         return result;
   35075             : #endif
   35076             :     }
   35077             : }
   35078             : 
   35079             : /* CIntFromPy */
   35080             :   static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
   35081             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   35082             : #pragma GCC diagnostic push
   35083             : #pragma GCC diagnostic ignored "-Wconversion"
   35084             : #endif
   35085             :     const char neg_one = (char) -1, const_zero = (char) 0;
   35086             : #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
   35087             : #pragma GCC diagnostic pop
   35088             : #endif
   35089             :     const int is_unsigned = neg_one > const_zero;
   35090             : #if PY_MAJOR_VERSION < 3
   35091             :     if (likely(PyInt_Check(x))) {
   35092             :         if ((sizeof(char) < sizeof(long))) {
   35093             :             __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x))
   35094             :         } else {
   35095             :             long val = PyInt_AS_LONG(x);
   35096             :             if (is_unsigned && unlikely(val < 0)) {
   35097             :                 goto raise_neg_overflow;
   35098             :             }
   35099             :             return (char) val;
   35100             :         }
   35101             :     }
   35102             : #endif
   35103             :     if (unlikely(!PyLong_Check(x))) {
   35104             :         char val;
   35105             :         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
   35106             :         if (!tmp) return (char) -1;
   35107             :         val = __Pyx_PyInt_As_char(tmp);
   35108             :         Py_DECREF(tmp);
   35109             :         return val;
   35110             :     }
   35111             :     if (is_unsigned) {
   35112             : #if CYTHON_USE_PYLONG_INTERNALS
   35113             :         if (unlikely(__Pyx_PyLong_IsNeg(x))) {
   35114             :             goto raise_neg_overflow;
   35115             :         } else if (__Pyx_PyLong_IsCompact(x)) {
   35116             :             __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
   35117             :         } else {
   35118             :             const digit* digits = __Pyx_PyLong_Digits(x);
   35119             :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   35120             :             switch (__Pyx_PyLong_DigitCount(x)) {
   35121             :                 case 2:
   35122             :                     if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) {
   35123             :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   35124             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35125             :                         } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) {
   35126             :                             return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
   35127             :                         }
   35128             :                     }
   35129             :                     break;
   35130             :                 case 3:
   35131             :                     if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) {
   35132             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   35133             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35134             :                         } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) {
   35135             :                             return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
   35136             :                         }
   35137             :                     }
   35138             :                     break;
   35139             :                 case 4:
   35140             :                     if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) {
   35141             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   35142             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35143             :                         } else if ((8 * sizeof(char) >= 4 * PyLong_SHIFT)) {
   35144             :                             return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
   35145             :                         }
   35146             :                     }
   35147             :                     break;
   35148             :             }
   35149             :         }
   35150             : #endif
   35151             : #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
   35152             :         if (unlikely(Py_SIZE(x) < 0)) {
   35153             :             goto raise_neg_overflow;
   35154             :         }
   35155             : #else
   35156             :         {
   35157             :             int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
   35158             :             if (unlikely(result < 0))
   35159             :                 return (char) -1;
   35160             :             if (unlikely(result == 1))
   35161             :                 goto raise_neg_overflow;
   35162             :         }
   35163             : #endif
   35164             :         if ((sizeof(char) <= sizeof(unsigned long))) {
   35165             :             __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x))
   35166             : #ifdef HAVE_LONG_LONG
   35167             :         } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) {
   35168             :             __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
   35169             : #endif
   35170             :         }
   35171             :     } else {
   35172             : #if CYTHON_USE_PYLONG_INTERNALS
   35173             :         if (__Pyx_PyLong_IsCompact(x)) {
   35174             :             __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
   35175             :         } else {
   35176             :             const digit* digits = __Pyx_PyLong_Digits(x);
   35177             :             assert(__Pyx_PyLong_DigitCount(x) > 1);
   35178             :             switch (__Pyx_PyLong_SignedDigitCount(x)) {
   35179             :                 case -2:
   35180             :                     if ((8 * sizeof(char) - 1 > 1 * PyLong_SHIFT)) {
   35181             :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   35182             :                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35183             :                         } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) {
   35184             :                             return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35185             :                         }
   35186             :                     }
   35187             :                     break;
   35188             :                 case 2:
   35189             :                     if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) {
   35190             :                         if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
   35191             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35192             :                         } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) {
   35193             :                             return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35194             :                         }
   35195             :                     }
   35196             :                     break;
   35197             :                 case -3:
   35198             :                     if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) {
   35199             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   35200             :                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35201             :                         } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) {
   35202             :                             return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35203             :                         }
   35204             :                     }
   35205             :                     break;
   35206             :                 case 3:
   35207             :                     if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) {
   35208             :                         if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
   35209             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35210             :                         } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) {
   35211             :                             return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35212             :                         }
   35213             :                     }
   35214             :                     break;
   35215             :                 case -4:
   35216             :                     if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) {
   35217             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   35218             :                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35219             :                         } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) {
   35220             :                             return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35221             :                         }
   35222             :                     }
   35223             :                     break;
   35224             :                 case 4:
   35225             :                     if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) {
   35226             :                         if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
   35227             :                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
   35228             :                         } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) {
   35229             :                             return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
   35230             :                         }
   35231             :                     }
   35232             :                     break;
   35233             :             }
   35234             :         }
   35235             : #endif
   35236             :         if ((sizeof(char) <= sizeof(long))) {
   35237             :             __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x))
   35238             : #ifdef HAVE_LONG_LONG
   35239             :         } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) {
   35240             :             __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x))
   35241             : #endif
   35242             :         }
   35243             :     }
   35244             :     {
   35245             :         char val;
   35246             :         int ret = -1;
   35247             : #if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
   35248             :         Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
   35249             :             x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
   35250             :         if (unlikely(bytes_copied == -1)) {
   35251             :         } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
   35252             :             goto raise_overflow;
   35253             :         } else {
   35254             :             ret = 0;
   35255             :         }
   35256             : #elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
   35257             :         int one = 1; int is_little = (int)*(unsigned char *)&one;
   35258             :         unsigned char *bytes = (unsigned char *)&val;
   35259             :         ret = _PyLong_AsByteArray((PyLongObject *)x,
   35260             :                                     bytes, sizeof(val),
   35261             :                                     is_little, !is_unsigned);
   35262             : #else
   35263             :         PyObject *v;
   35264             :         PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
   35265             :         int bits, remaining_bits, is_negative = 0;
   35266             :         int chunk_size = (sizeof(long) < 8) ? 30 : 62;
   35267             :         if (likely(PyLong_CheckExact(x))) {
   35268             :             v = __Pyx_NewRef(x);
   35269             :         } else {
   35270             :             v = PyNumber_Long(x);
   35271             :             if (unlikely(!v)) return (char) -1;
   35272             :             assert(PyLong_CheckExact(v));
   35273             :         }
   35274             :         {
   35275             :             int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
   35276             :             if (unlikely(result < 0)) {
   35277             :                 Py_DECREF(v);
   35278             :                 return (char) -1;
   35279             :             }
   35280             :             is_negative = result == 1;
   35281             :         }
   35282             :         if (is_unsigned && unlikely(is_negative)) {
   35283             :             Py_DECREF(v);
   35284             :             goto raise_neg_overflow;
   35285             :         } else if (is_negative) {
   35286             :             stepval = PyNumber_Invert(v);
   35287             :             Py_DECREF(v);
   35288             :             if (unlikely(!stepval))
   35289             :                 return (char) -1;
   35290             :         } else {
   35291             :             stepval = v;
   35292             :         }
   35293             :         v = NULL;
   35294             :         val = (char) 0;
   35295             :         mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
   35296             :         shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
   35297             :         for (bits = 0; bits < (int) sizeof(char) * 8 - chunk_size; bits += chunk_size) {
   35298             :             PyObject *tmp, *digit;
   35299             :             long idigit;
   35300             :             digit = PyNumber_And(stepval, mask);
   35301             :             if (unlikely(!digit)) goto done;
   35302             :             idigit = PyLong_AsLong(digit);
   35303             :             Py_DECREF(digit);
   35304             :             if (unlikely(idigit < 0)) goto done;
   35305             :             val |= ((char) idigit) << bits;
   35306             :             tmp = PyNumber_Rshift(stepval, shift);
   35307             :             if (unlikely(!tmp)) goto done;
   35308             :             Py_DECREF(stepval); stepval = tmp;
   35309             :         }
   35310             :         Py_DECREF(shift); shift = NULL;
   35311             :         Py_DECREF(mask); mask = NULL;
   35312             :         {
   35313             :             long idigit = PyLong_AsLong(stepval);
   35314             :             if (unlikely(idigit < 0)) goto done;
   35315             :             remaining_bits = ((int) sizeof(char) * 8) - bits - (is_unsigned ? 0 : 1);
   35316             :             if (unlikely(idigit >= (1L << remaining_bits)))
   35317             :                 goto raise_overflow;
   35318             :             val |= ((char) idigit) << bits;
   35319             :         }
   35320             :         if (!is_unsigned) {
   35321             :             if (unlikely(val & (((char) 1) << (sizeof(char) * 8 - 1))))
   35322             :                 goto raise_overflow;
   35323             :             if (is_negative)
   35324             :                 val = ~val;
   35325             :         }
   35326             :         ret = 0;
   35327             :     done:
   35328             :         Py_XDECREF(shift);
   35329             :         Py_XDECREF(mask);
   35330             :         Py_XDECREF(stepval);
   35331             : #endif
   35332             :         if (unlikely(ret))
   35333             :             return (char) -1;
   35334             :         return val;
   35335             :     }
   35336             : raise_overflow:
   35337             :     PyErr_SetString(PyExc_OverflowError,
   35338             :         "value too large to convert to char");
   35339             :     return (char) -1;
   35340             : raise_neg_overflow:
   35341             :     PyErr_SetString(PyExc_OverflowError,
   35342             :         "can't convert negative value to char");
   35343             :     return (char) -1;
   35344             : }
   35345             : 
   35346             : /* FormatTypeName */
   35347             :   #if CYTHON_COMPILING_IN_LIMITED_API
   35348             : static __Pyx_TypeName
   35349             : __Pyx_PyType_GetName(PyTypeObject* tp)
   35350             : {
   35351             :     PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
   35352             :                                                __pyx_n_s_name_2);
   35353             :     if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
   35354             :         PyErr_Clear();
   35355             :         Py_XDECREF(name);
   35356             :         name = __Pyx_NewRef(__pyx_n_s__30);
   35357             :     }
   35358             :     return name;
   35359             : }
   35360             : #endif
   35361             : 
   35362             : /* CheckBinaryVersion */
   35363           1 :   static unsigned long __Pyx_get_runtime_version(void) {
   35364             : #if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
   35365           1 :     return Py_Version & ~0xFFUL;
   35366             : #else
   35367             :     const char* rt_version = Py_GetVersion();
   35368             :     unsigned long version = 0;
   35369             :     unsigned long factor = 0x01000000UL;
   35370             :     unsigned int digit = 0;
   35371             :     int i = 0;
   35372             :     while (factor) {
   35373             :         while ('0' <= rt_version[i] && rt_version[i] <= '9') {
   35374             :             digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
   35375             :             ++i;
   35376             :         }
   35377             :         version += factor * digit;
   35378             :         if (rt_version[i] != '.')
   35379             :             break;
   35380             :         digit = 0;
   35381             :         factor >>= 8;
   35382             :         ++i;
   35383             :     }
   35384             :     return version;
   35385             : #endif
   35386             : }
   35387           1 : static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
   35388           1 :     const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
   35389           1 :     if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
   35390             :         return 0;
   35391           0 :     if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
   35392             :         return 1;
   35393             :     {
   35394           0 :         char message[200];
   35395           0 :         PyOS_snprintf(message, sizeof(message),
   35396             :                       "compile time Python version %d.%d "
   35397             :                       "of module '%.100s' "
   35398             :                       "%s "
   35399             :                       "runtime version %d.%d",
   35400           0 :                        (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
   35401             :                        __Pyx_MODULE_NAME,
   35402             :                        (allow_newer) ? "was newer than" : "does not match",
   35403           0 :                        (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
   35404             :        );
   35405           0 :         return PyErr_WarnEx(NULL, message, 1);
   35406             :     }
   35407             : }
   35408             : 
   35409             : /* InitStrings */
   35410             :   #if PY_MAJOR_VERSION >= 3
   35411         160 : static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
   35412         160 :     if (t.is_unicode | t.is_str) {
   35413         159 :         if (t.intern) {
   35414         105 :             *str = PyUnicode_InternFromString(t.s);
   35415          54 :         } else if (t.encoding) {
   35416           0 :             *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
   35417             :         } else {
   35418          54 :             *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
   35419             :         }
   35420             :     } else {
   35421           1 :         *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
   35422             :     }
   35423         160 :     if (!*str)
   35424             :         return -1;
   35425         160 :     if (PyObject_Hash(*str) == -1)
   35426             :         return -1;
   35427             :     return 0;
   35428             : }
   35429             : #endif
   35430           1 : static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
   35431         161 :     while (t->p) {
   35432             :         #if PY_MAJOR_VERSION >= 3
   35433         160 :         __Pyx_InitString(*t, t->p);
   35434             :         #else
   35435             :         if (t->is_unicode) {
   35436             :             *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
   35437             :         } else if (t->intern) {
   35438             :             *t->p = PyString_InternFromString(t->s);
   35439             :         } else {
   35440             :             *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
   35441             :         }
   35442             :         if (!*t->p)
   35443             :             return -1;
   35444             :         if (PyObject_Hash(*t->p) == -1)
   35445             :             return -1;
   35446             :         #endif
   35447         160 :         ++t;
   35448             :     }
   35449           1 :     return 0;
   35450             : }
   35451             : 
   35452             : #include <string.h>
   35453           0 : static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
   35454           0 :     size_t len = strlen(s);
   35455           0 :     if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
   35456             :         PyErr_SetString(PyExc_OverflowError, "byte string is too long");
   35457             :         return -1;
   35458             :     }
   35459             :     return (Py_ssize_t) len;
   35460             : }
   35461             : static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
   35462             :     Py_ssize_t len = __Pyx_ssize_strlen(c_str);
   35463             :     if (unlikely(len < 0)) return NULL;
   35464             :     return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
   35465             : }
   35466             : static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
   35467             :     Py_ssize_t len = __Pyx_ssize_strlen(c_str);
   35468             :     if (unlikely(len < 0)) return NULL;
   35469             :     return PyByteArray_FromStringAndSize(c_str, len);
   35470             : }
   35471             : static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
   35472             :     Py_ssize_t ignore;
   35473             :     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
   35474             : }
   35475             : #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
   35476             : #if !CYTHON_PEP393_ENABLED
   35477             : static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
   35478             :     char* defenc_c;
   35479             :     PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
   35480             :     if (!defenc) return NULL;
   35481             :     defenc_c = PyBytes_AS_STRING(defenc);
   35482             : #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
   35483             :     {
   35484             :         char* end = defenc_c + PyBytes_GET_SIZE(defenc);
   35485             :         char* c;
   35486             :         for (c = defenc_c; c < end; c++) {
   35487             :             if ((unsigned char) (*c) >= 128) {
   35488             :                 PyUnicode_AsASCIIString(o);
   35489             :                 return NULL;
   35490             :             }
   35491             :         }
   35492             :     }
   35493             : #endif
   35494             :     *length = PyBytes_GET_SIZE(defenc);
   35495             :     return defenc_c;
   35496             : }
   35497             : #else
   35498             : static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
   35499             :     if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
   35500             : #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
   35501             :     if (likely(PyUnicode_IS_ASCII(o))) {
   35502             :         *length = PyUnicode_GET_LENGTH(o);
   35503             :         return PyUnicode_AsUTF8(o);
   35504             :     } else {
   35505             :         PyUnicode_AsASCIIString(o);
   35506             :         return NULL;
   35507             :     }
   35508             : #else
   35509             :     return PyUnicode_AsUTF8AndSize(o, length);
   35510             : #endif
   35511             : }
   35512             : #endif
   35513             : #endif
   35514             : static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
   35515             : #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
   35516             :     if (
   35517             : #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
   35518             :             __Pyx_sys_getdefaultencoding_not_ascii &&
   35519             : #endif
   35520             :             PyUnicode_Check(o)) {
   35521             :         return __Pyx_PyUnicode_AsStringAndSize(o, length);
   35522             :     } else
   35523             : #endif
   35524             : #if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
   35525             :     if (PyByteArray_Check(o)) {
   35526             :         *length = PyByteArray_GET_SIZE(o);
   35527             :         return PyByteArray_AS_STRING(o);
   35528             :     } else
   35529             : #endif
   35530             :     {
   35531             :         char* result;
   35532             :         int r = PyBytes_AsStringAndSize(o, &result, length);
   35533             :         if (unlikely(r < 0)) {
   35534             :             return NULL;
   35535             :         } else {
   35536             :             return result;
   35537             :         }
   35538             :     }
   35539             : }
   35540         544 : static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   35541         544 :    int is_true = x == Py_True;
   35542         544 :    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   35543         135 :    else return PyObject_IsTrue(x);
   35544             : }
   35545             : static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
   35546             :     int retval;
   35547             :     if (unlikely(!x)) return -1;
   35548             :     retval = __Pyx_PyObject_IsTrue(x);
   35549             :     Py_DECREF(x);
   35550             :     return retval;
   35551             : }
   35552           0 : static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
   35553           0 :     __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
   35554             : #if PY_MAJOR_VERSION >= 3
   35555           0 :     if (PyLong_Check(result)) {
   35556           0 :         if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
   35557             :                 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
   35558             :                 "The ability to return an instance of a strict subclass of int is deprecated, "
   35559             :                 "and may be removed in a future version of Python.",
   35560             :                 result_type_name)) {
   35561           0 :             __Pyx_DECREF_TypeName(result_type_name);
   35562           0 :             Py_DECREF(result);
   35563           0 :             return NULL;
   35564             :         }
   35565             :         __Pyx_DECREF_TypeName(result_type_name);
   35566             :         return result;
   35567             :     }
   35568             : #endif
   35569           0 :     PyErr_Format(PyExc_TypeError,
   35570             :                  "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
   35571             :                  type_name, type_name, result_type_name);
   35572           0 :     __Pyx_DECREF_TypeName(result_type_name);
   35573           0 :     Py_DECREF(result);
   35574             :     return NULL;
   35575             : }
   35576           0 : static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
   35577             : #if CYTHON_USE_TYPE_SLOTS
   35578           0 :   PyNumberMethods *m;
   35579             : #endif
   35580           0 :   const char *name = NULL;
   35581           0 :   PyObject *res = NULL;
   35582             : #if PY_MAJOR_VERSION < 3
   35583             :   if (likely(PyInt_Check(x) || PyLong_Check(x)))
   35584             : #else
   35585           0 :   if (likely(PyLong_Check(x)))
   35586             : #endif
   35587           0 :     return __Pyx_NewRef(x);
   35588             : #if CYTHON_USE_TYPE_SLOTS
   35589           0 :   m = Py_TYPE(x)->tp_as_number;
   35590             :   #if PY_MAJOR_VERSION < 3
   35591             :   if (m && m->nb_int) {
   35592             :     name = "int";
   35593             :     res = m->nb_int(x);
   35594             :   }
   35595             :   else if (m && m->nb_long) {
   35596             :     name = "long";
   35597             :     res = m->nb_long(x);
   35598             :   }
   35599             :   #else
   35600           0 :   if (likely(m && m->nb_int)) {
   35601           0 :     name = "int";
   35602           0 :     res = m->nb_int(x);
   35603             :   }
   35604             :   #endif
   35605             : #else
   35606             :   if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
   35607             :     res = PyNumber_Int(x);
   35608             :   }
   35609             : #endif
   35610           0 :   if (likely(res)) {
   35611             : #if PY_MAJOR_VERSION < 3
   35612             :     if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
   35613             : #else
   35614           0 :     if (unlikely(!PyLong_CheckExact(res))) {
   35615             : #endif
   35616           0 :         return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
   35617             :     }
   35618             :   }
   35619           0 :   else if (!PyErr_Occurred()) {
   35620           0 :     PyErr_SetString(PyExc_TypeError,
   35621             :                     "an integer is required");
   35622             :   }
   35623             :   return res;
   35624             : }
   35625         274 : static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   35626         274 :   Py_ssize_t ival;
   35627         274 :   PyObject *x;
   35628             : #if PY_MAJOR_VERSION < 3
   35629             :   if (likely(PyInt_CheckExact(b))) {
   35630             :     if (sizeof(Py_ssize_t) >= sizeof(long))
   35631             :         return PyInt_AS_LONG(b);
   35632             :     else
   35633             :         return PyInt_AsSsize_t(b);
   35634             :   }
   35635             : #endif
   35636         274 :   if (likely(PyLong_CheckExact(b))) {
   35637             :     #if CYTHON_USE_PYLONG_INTERNALS
   35638         274 :     if (likely(__Pyx_PyLong_IsCompact(b))) {
   35639         274 :         return __Pyx_PyLong_CompactValue(b);
   35640             :     } else {
   35641           0 :       const digit* digits = __Pyx_PyLong_Digits(b);
   35642           0 :       const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
   35643           0 :       switch (size) {
   35644             :          case 2:
   35645           0 :            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
   35646           0 :              return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35647             :            }
   35648             :            break;
   35649             :          case -2:
   35650           0 :            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
   35651           0 :              return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35652             :            }
   35653             :            break;
   35654             :          case 3:
   35655             :            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
   35656             :              return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35657             :            }
   35658             :            break;
   35659             :          case -3:
   35660             :            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
   35661             :              return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35662             :            }
   35663             :            break;
   35664             :          case 4:
   35665             :            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
   35666             :              return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35667             :            }
   35668             :            break;
   35669             :          case -4:
   35670             :            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
   35671             :              return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
   35672             :            }
   35673             :            break;
   35674             :       }
   35675             :     }
   35676             :     #endif
   35677           0 :     return PyLong_AsSsize_t(b);
   35678             :   }
   35679           0 :   x = PyNumber_Index(b);
   35680           0 :   if (!x) return -1;
   35681           0 :   ival = PyInt_AsSsize_t(x);
   35682           0 :   Py_DECREF(x);
   35683             :   return ival;
   35684             : }
   35685             : static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
   35686             :   if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
   35687             :     return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
   35688             : #if PY_MAJOR_VERSION < 3
   35689             :   } else if (likely(PyInt_CheckExact(o))) {
   35690             :     return PyInt_AS_LONG(o);
   35691             : #endif
   35692             :   } else {
   35693             :     Py_ssize_t ival;
   35694             :     PyObject *x;
   35695             :     x = PyNumber_Index(o);
   35696             :     if (!x) return -1;
   35697             :     ival = PyInt_AsLong(x);
   35698             :     Py_DECREF(x);
   35699             :     return ival;
   35700             :   }
   35701             : }
   35702         408 : static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
   35703         408 :   return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
   35704             : }
   35705             : static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
   35706             :     return PyInt_FromSize_t(ival);
   35707             : }
   35708             : 
   35709             : 
   35710             : /* #### Code section: utility_code_pragmas_end ### */
   35711             : #ifdef _MSC_VER
   35712             : #pragma warning( pop )
   35713             : #endif
   35714             : 
   35715             : 
   35716             : 
   35717             : /* #### Code section: end ### */
   35718             : #endif /* Py_PYTHON_H */

Generated by: LCOV version 1.16